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

6

我在研究如何使用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.

这到底是干什么的?

如果您正在开发Chrome扩展程序,请查看http://area51.stackexchange.com/proposals/10910/google-chrome-extensions-webstore?referrer=SDGU8262nOKdp17Pr161Vw2 - Lizard
2个回答

9

很有趣,我之前没见过这个:

/regex/(...);
编辑: 请参考这个链接

以下内容:

/(..)(:..)/(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,这使得下一个语句能够返回正确的上午/下午后缀。(12:00是am)。


1
你可以通过将第一行替换为 var hour = /(..)(:..)/(Date())[1]; 来缩短上面的代码,然后只需引用 hour 而不是 time[1] - Sasha Chedygov

1

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

第二行获取第一组字符,它将自动转换为数字,并得到除以12的余数。假设将24小时制数字转换为12小时制数字。“|| 12”用于在余数为0时返回12。

第三行使用三元条件运算符,在小时小于12时添加“a.m.”,否则添加“p.m.”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接