Как этот оператор JavaScript вычисляет дату? - PullRequest
6 голосов
/ 08 июля 2010

Поэтому я смотрел, как можно отобразить уведомление на рабочем столе, используя расширения 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 ]

9 голосов
/ 08 июля 2010

Захватывающе, я не видел этого раньше:

/regex/(...);

РЕДАКТИРОВАТЬ : увидеть это !

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 голос
/ 08 июля 2010

В первой строке используется регулярное выражение для извлечения элемента времени из строки, возвращаемой функцией Date ().Например, это может быть '08: 37 '. Скобки в этом регулярном выражении дают две разные' группы 'символов, первая группа соответствует' 08 ', вторая соответствует' 37 '

Вторая строкавзять первый набор символов, который будет автоматически преобразован в число, и получить остаток от деления на 12. Предположительно, чтобы превратить 24-часовой формат в 12-часовой.«||12 'возвращает 12 только в том случае, если остаток равен 0.

Третья строка использует троичный условный оператор для добавления' am 'на случай, если час меньше 12, в противном случае' pm '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...