2016-11-11 14 views
2

Juliaで2038年以降の日付を使用する必要があります。どうやってするか?どうやら、あなたは2038Juliaで2038年以降の日付を使用するには?

後に年間でTimeZones.jlのMD

https://github.com/JuliaTime/TimeZones.jl/blob/d997abb7398ca8514007d1cbc77a031f721c727b/docs/types.md

をtimezoned日付を使用することはできません存在しないリンクページを参照する以下の説明が得られます。また

」、 2038年以降の将来の日付を使用するとエラーになります:

julia> ZonedDateTime(2039, warsaw) 
ERROR: TimeZone Europe/Warsaw does not handle dates on or after 2038-03-28T01:00:00 UTC 
in call at ~/.julia/v0.4/TimeZones/src/timezones/types.jl:146 
in ZonedDateTime at ~/.julia/v0.4/TimeZones/src/timezones/types.jl:260 

timを持つことは可能です2038年を超えて働くezones [リンク]しかし、これらの日付が未来にあるので、タイムゾーンルールが変更され、正確ではない可能性があります。

+0

の時間帯は、私はタイムゾーンが2038年にどのようになるかについて尋ねていない午前2038 –

+0

@MattJohnsonにどのようになるかを伝えることができ、この地球上で何人がありません! Juliaが今日から2038年にかけて、また過去についても、恣意的に見える2038年を超えない今日のルールに従って、タイムゾーンで日付を計算する方法を尋ねています。 – Ferenc

+0

'FixedTimeZone'はいつでも動作します。つまり、特定のDateTimeに対して 'warsaw'が例えばUTC + 0200であれば、' ZonedDateTime(2039、FixedTimeZone( "+ 0200")) 'とすることができます。 @MattJohnsonは言ったように、2038年以降の夏時間スケジュールにあまりにも頼るのは賢明ではない。 –

答えて

3

これは正しいlinkです。

それは言う:

Due to the internal representation of a VariableTimeZone it is infeasible to determine a time zones transitions to infinity. Since 2038-01-19T03:14:07 is the last DateTime that can be represented by an Int32 (Dates.unix2datetime(typemax(Int32))) it was decided that 2037 would be the last year in which all transition dates are computed. If additional transitions are known to exist after the last transition then a cutoff date is specified.

It is important to note that since we are taking about future time zone transitions and the rules dictating these transitions are subject to change and may not be accurate. If you still want to work with future ZonedDateTime past the default cutoff you can re-compile the TimeZone objects and specify the max_year keyword: *

*重点鉱山。より慎重に私の質問を読んでください

using TimeZones 

TimeZones.Olson.compile(max_year=2200) 

ZonedDateTime(DateTime(2100), TimeZone("Europe/Warsaw")) 

>>> 2100-01-01T00:00:00+01:00 
関連する問題