Как я могу "разобрать" дату в определенном часовом поясе?
Используя clj-time, я могу разобрать дату и время, выполнив
(def timestamp (format/parse (formatters :date-time-no-ms)
"2013-06-03T23:00:00-0500"))
;=> #<DateTime 2013-06-04T04:00:00.000Z>
Я могу преобразовать это обратно в строку, выполнив
(unparse (formatters :year-month-day) timestamp)
;=> "2013-06-04"
Это год, месяц и день этого момента в часовом поясе UTC. Как я могу получить непарсированную версию DateTime
относительно другого часового пояса? Например, для приведенного выше примера я хочу указать часовой пояс UTC–5 и получить строку "2013-06-03". Я играл с from-time-zone
а также to-time-zone
но не могу найти правильную комбинацию функций и аргументов.
1 ответ
Решение
Вы хотите использовать clj-time.format/with-zone
:
(require '(clj-time [core :as time] [format :as timef]))
(timef/unparse (timef/with-zone (:date-time-no-ms timef/formatters)
(time/time-zone-for-id "America/Chicago"))
(time/now))
;= "2013-06-02T15:20:03-05:00"