我一直在玩到本地日期時間,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. 在用戶時區顯示MySQL日期時間
- 6. DateTime對象和顯示的日期/時間在備用時區
- 7. 根據用戶在Coldfusion中的時區顯示日期和時間
- 8. 將UTC日期時間顯示到用戶定義的時區
- 9. 根據用戶的時區顯示UTC時間
- 10. PHP:根據用戶的時區顯示時間
- 11. 獲取用戶時區以顯示正確的時間
- 12. 在用戶的時區獲取用戶的日期和時間
- 13. 以用戶區域顯示日期和時間
- 14. 顯示用戶時間線
- 15. 關於根據用戶時區存儲和顯示日期和時間
- 16. 我想向用戶顯示可用時間和預訂時間
- 17. 顯示另一個時區的時間
- 18. 每個時區的顯示時間
- 19. Mysql PHP存儲和顯示購買時間爲正確的用戶時區
- 20. 如何顯示客戶端時區和時區縮寫?
- 21. Hightchart在線顯示用戶時間
- 22. 修改時間顯示UTC時區
- 23. 如何處理用戶在不同時區的日期時間顯示?
- 24. 在Django中使用給定的時區顯示時間
- 25. 按訪問者的電腦時區顯示日期和時間
- 26. Javascript在我的網站上使用UTC顯示日期和時間來考慮用戶在javascript中的時區
- 27. 如果我在UTC有那段時間,如何在用戶的本地時區顯示時間?
- 28. 如何在LotusScript中用時區顯示當前日期/時間?
- 29. 使用date()函數在特定時區顯示時間/日期
- 30. Twitter時區和created_at(utc時間)值來計算用戶在什麼時區
如果你在模式中使用'hh',你也應該使用'aa'。否則,使用'HH'。 –
是的。更新我的樣本以反映這一點。 – Jared314