我一直在玩到本地日期时间,org.joda.time.DateTimeZone/getDefault,格式化程序等,我仍然无法弄清楚如何获取我存储为UTC的日期时间以显示在用户的时区中。有些格式化程序可以显示时间,但它显示UTC时间和偏移量。例如,如果我有2013-10-05T19:02:25.641-04:00,我怎样才能让它显示“2013-10-05 14:02:25”?clj时间和在用户的时区显示
2
A
回答
5
您可以将时区应用于clj-time.core/to-time-zone
,使用clj-time.core/time-zone-for-offset
(只有目标偏移量)才能从存储的UTC获取本地化时间。
clj-time.format/formatters
地图中有许多现有的UTC格式化程序,但您始终可以从clj-time.format/formatter
或clj-time.format/formatter-local
和clj-time.format/unparse
创建自己的格式程序。
(require '[clj-time.core :as t]
'[clj-time.format :as f])
(defn formatlocal [n offset]
(let [nlocal (t/to-time-zone n (t/time-zone-for-offset offset))]
(f/unparse (f/formatter-local "yyyy-MM-dd hh:mm:ss aa")
nlocal)))
(formatlocal (t/now) -7)
3
2013-10-05T19:02:25.641-04:00
是当地的时间,这将是UTC时间2013-10-05T23:02:25.641Z
。
如果你有一个有效的UTC时间,做不是尝试将它转换为to-local-date-time
! to-local-date-time
是一个方便的功能,用于在不转换时间的情况下更改DateTime实例上的时区。要正确转换时间,请改用to-time-zone
。
要格式化没有时区信息的日期时间,请使用自定义格式器。你的例子将由模式"yyyy-MM-dd HH:mm:ss"
产生。
实施例:
定义UTC时间:
time-test.core> (def t0 (date-time 2013 10 05 23 02 25 641))
#'time-test.core/t0
time-test.core> t0
#<DateTime 2013-10-05T23:02:25.641Z>
它转换为本地时间:
time-test.core> (def t1 (to-time-zone t0 (time-zone-for-offset -4)))
#'time-test.core/t1
time-test.core> t1
#<DateTime 2013-10-05T19:02:25.641-04:00>
格式的本地时间:
time-test.core> (unparse (formatter-local "yyyy-MM-dd HH:mm:ss") t1)
"2013-10-05 19:02:25"
3
我觉得这是更好地从格式化的时区支持使用编译
(require '[clj-time.core :as t]
'[clj-time.format :as f])
(def custom-time-formatter (f/with-zone (f/formatter "yyyy-MM-dd hh:mm:ss")
(t/default-time-zone)))
(f/unparse custom-time-formatter (t/now))
,而不是(t/default-time-zone)
您可以使用特定的时区或偏移(见CLJ-time.core文档)
(也许这在2013年没有工作:))
相关问题
- 1. 检测用户时区并显示该时区的UTC时间
- 2. 显示日期/时间用户的时区 - 在客户端
- 3. 使用用户会话时区显示日期和时间
- 4. 如何在客户端时区显示日期和时间
- 5. 根据用户在Coldfusion中的时区显示日期和时间
- 6. 将UTC日期时间显示到用户定义的时区
- 7. PHP:根据用户的时区显示时间
- 8. 在用户的时区获取用户的日期和时间
- 9. 以用户区域显示日期和时间
- 10. 显示用户时间线
- 11. 关于根据用户时区存储和显示日期和时间
- 12. 我想向用户显示可用时间和预订时间
- 13. 显示另一个时区的时间
- 14. 每个时区的显示时间
- 15. Mysql PHP存储和显示购买时间为正确的用户时区
- 16. 如何显示客户端时区和时区缩写?
- 17. 修改时间显示UTC时区
- 18. 如何处理用户在不同时区的日期时间显示?
- 19. 在Django中使用给定的时区显示时间
- 20. 按访问者的电脑时区显示日期和时间
- 21. Javascript在我的网站上使用UTC显示日期和时间来考虑用户在javascript中的时区
- 22. 如果我在UTC有那段时间,如何在用户的本地时区显示时间?
- 23. 如何在LotusScript中用时区显示当前日期/时间?
- 24. 使用date()函数在特定时区显示时间/日期
- 25. Twitter时区和created_at(utc时间)值来计算用户在什么时区
- 26. 在ASP.NET MVC中显示客户端时区中的日期时间
- 27. WordPress - 根据网站时区显示当前日期和时间
- 28. ssrs报告与用户时间显示
- 29. 向用户显示当地时间? PHP
- 30. 如何使用缩短的时区显示日期时间?
如果你在模式中使用'hh',你也应该使用'aa'。否则,使用'HH'。 –
是的。更新我的样本以反映这一点。 – Jared314