这个JavaScript语句如何计算日期?

时间:2010-07-08 07:29:52

标签: javascript google-chrome google-chrome-extension

所以当我遇到这些代码时,我正在研究如何使用Google Chrome扩展程序显示桌面通知:

var time = /(..)(:..)/(Date());              // The prettyprinted time.
var hour = time[1] % 12 || 12;               // The prettyprinted hour.
var period = time[1] < 12 ? 'a.m.' : 'p.m.'; // The period of the day.

这有什么作用呢?

2 个答案:

答案 0 :(得分:9)

引人入胜,我以前没见过:

/regex/(...);

编辑 see this

此:

/(..)(:..)/(Date());
// seems to emulate the functionality of exec()

将返回正则表达式/(..)(:..)/的匹配(匹配组的数组)与字符串(Date()):

"Thu Jul 08 2010 09:40:38 GMT+0200 (W. Europe Daylight Time)"

(或任何时候)

在这种情况下,返回的数组(匹配)是:

["09:40", "09", ":40"]

这一行:

var hour = time[1] % 12 || 12; 

......只是确定小时。如果小时为 falsey (即0),则默认为12 - 这使得下一个语句可以返回正确的am / pm后缀。 (12:00是am)。

答案 1 :(得分:1)

第一行使用正则表达式从Date()返回的字符串中提取time元素。例如,这可能是'08:37'这个正则表达式中的括号给出两个不同的'组'字符,第一组匹配'08',第二组匹配'37'

第二行是第一组字符,它将自动转换为数字,并将除法的余数除以12.大概是将24小时时钟数转换为12小时时钟数。 “|| 12'用于返回12,以防余数为0。

第三行使用三元条件运算符添加'a.m'以防小时小于12,否则'p.m。'