簡體   English   中英

埃菲爾:如何處理時區?

[英]Eiffel: How do I handle timezones?

我找不到時區 DATE_TIME類和TIME類的任何概念。 我錯了嗎?

如何使用Eiffel庫處理時區

是否可以通過{DATE_TIME}.formated_out ("YYYY-MM-DD [0]hh:[0]mi:[0]ss")

時區有設定器嗎?

我已經在使用UTC進行記錄的記錄器中遇到了這個問題...

我發現的唯一解決方法l.hour_add (-3)l.hour_add (-3)之前,這確實很臟

據我所知,類DATE_TIME不包含有關日期時間應該位於的時區的任何信息。

如果您的記錄器需要UTC時間,則可能需要使用:

create l_date_time.make_now_utc

代替:

create l_date_time.make_now

請注意,Gobo Eiffel庫對時區提供了一些基本支持,但它並不比l_date_time.hour_add (-3)更好,因為日期/時間在打印之前需要從一個時區轉換為另一個時區。

local
    l_date_time: DT_DATE_TIME
    l_time_zone: DT_FIXED_OFFSET_TIME_ZONE
    l_date_time_formatter: ST_XSD_DATE_TIME_FORMAT
    s: STRING
do
    create l_date_time_formatter
    create l_time_zone.make_hours_minutes (-3, 0)
    l_date_time := {DT_SHARED_SYSTEM_CLOCK}.system_clock.date_time_now
    s := l_date_time_formatter.date_time_to_string (l_time_zone.date_time_to_utc (l_date_time))

還有一個類DT_FIXED_OFFSET_ZONED_DATE_TIME ,但是恐怕它不會使上面的代碼更加冗長,因為您仍然需要為其提供日期時間及其關聯的時區。

您可能還想看看另一個Eiffel庫: ISO8601日期/時間庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM