neo4j datetime форматирование с часовым поясом - PullRequest
1 голос
/ 29 января 2020

Я прочитал документы и пришел к выводу, что не должен понимать Engli sh.

Пример создания метки даты и времени:

   CREATE (account:User)
   SET account.createdDT=datetime()
   SET account.timezone="Greenwich"

Я предполагаю, что дата и время создаются в GMT - правильно?

Я хочу получить account.createdDT и отобразить его в часовом поясе пользователя

   MATCH (account)
   RETURN account.createdDT 

Как я могу отформатировать account.createdDT, чтобы перейти в часовой пояс пользователя и выглядеть нормально для людей? ?

   RETURN apoc.date.format(account.createdDT, "s", "MMM d yyyy", account.timezone),
   apoc.date.parse (account.createdDT, "s", "MMM d yyyy", account.timezone)

не работает: вызов функции не предоставляет необходимого количества аргументов: ожидаемый 0 получил 1 и «Невозможно привести к строке»

Я также пытался с Америкой / Нью-Йорком, поэтому я не думаю, что это значение часового пояса.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 января 2020

Функция datetime() является настраиваемой и может принимать часовой пояс, например: datetime({timezone:"Greenwich"}), поэтому у User нет причин иметь отдельное свойство timezone.

Также, Существуют специальные временные APO C функции для форматирования временных значений , возвращаемых временных функций , таких как datetime(). Вы должны использовать функцию apoc.temporal.format().

Например:

CREATE (account:User)
SET account.createdDT=datetime({timezone:"America/New_York"})
RETURN
  apoc.temporal.format(account.createdDT, 'yyyy/MM/dd HH:mm'), 
  apoc.temporal.format(datetime({datetime: account.createdDT, timezone: "Greenwich"}), 'yyyy/MM/dd HH:mm'),  
  apoc.temporal.format(datetime({datetime: account.createdDT, timezone: "America/New_York"}), 'yyyy/MM/dd HH:mm')
0 голосов
/ 29 января 2020

Вот как я решил это.

Я никогда не получал apo c .date.parse или apo c .date.format для работы с созданным Datetime ().

Однако, это прекрасно работает:

CREATE (account:User)
SET account.createdDT=Timestamp(), account.timezone="America/New_York"
RETURN apoc.date.format(account.createdDT, 'ms', 'yyyy/MM/dd HH:mm'), 
apoc.date.format(account.createdDT, 'ms', 'yyyy/MM/dd HH:mm', "Greenwich"),  
apoc.date.format(account.createdDT, 'ms', 'yyyy/MM/dd HH:mm', "America/New_York"),  
apoc.date.format(account.createdDT, 'ms', 'yyyy/MM/dd HH:mm', account.timezone)

Не уверен, почему я не могу заставить его работать с DateTime (), но go с потоком ...

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