Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Julia的夏令时(DST)是否有效_Julia - Fatal编程技术网

检查Julia的夏令时(DST)是否有效

检查Julia的夏令时(DST)是否有效,julia,Julia,我需要将历元时间转换为日期时间字符串,反之亦然。 时间字符串的格式为YYYY/month/day HH:MM:SS,表示本地时间 如何获得DST是否有效 const CSV_DATE_FORMAT = "%Y/%m/%d %H:%M:%S" function ts(datetime::String) ts = Libc.strptime(CSV_DATE_FORMAT, datetime) # how to check if DST in is effect

我需要将历元时间转换为日期时间字符串,反之亦然。 时间字符串的格式为
YYYY/month/day HH:MM:SS
,表示本地时间

如何获得DST是否有效

const CSV_DATE_FORMAT = "%Y/%m/%d %H:%M:%S"

function ts(datetime::String)
    ts = Libc.strptime(CSV_DATE_FORMAT, datetime)
    # how to check if DST in is effect ???
    return Int(round(time(ts)))
end


function datetime(ts::Int64, fmt::String = "%Y/%m/%d %H:%M:%S")
    dt = Libc.TmStruct(ts)
    # if daylightsaving()
    #     ts.isdst = 1 
    # else
    #     ts.isdst = 0
    # end
    Libc.strftime(fmt, dt)
end

如何检查夏令时是否有效?

我在这里根本不会使用Libc;Julia标准库
日期
时区
软件包结合使用,功能更加强大。首先,将日期解析为无时区的日期:

const CSV_DATE_FORMAT = "%Y/%m/%d %H:%M:%S"

function ts(datetime::String)
    ts = Libc.strptime(CSV_DATE_FORMAT, datetime)
    # how to check if DST in is effect ???
    return Int(round(time(ts)))
end


function datetime(ts::Int64, fmt::String = "%Y/%m/%d %H:%M:%S")
    dt = Libc.TmStruct(ts)
    # if daylightsaving()
    #     ts.isdst = 1 
    # else
    #     ts.isdst = 0
    # end
    Libc.strftime(fmt, dt)
end
julia> using Dates, TimeZones

julia> format = dateformat"Y/m/d H:M:S"
dateformat"Y/m/d H:M:S"

julia> dt = DateTime("2020/10/26 11:08", format)
2020-10-26T11:08:00
然后附加本地时区:

julia> zdt = ZonedDateTime(dt, localzone())
2020-10-26T11:08:00-04:00
最后,您可以询问未来是否会有任何过渡,以及它们是什么:

julia> show_next_transition(zdt)
Transition Date:   2020-11-01
Local Time Change: 02:00 → 01:00 (Backward)
Offset Change:     UTC-5/+1 → UTC-5/+0
Transition From:   2020-11-01T01:59:59.999-04:00 (EDT)
Transition To:     2020-11-01T01:00:00.000-05:00 (EST)
请注意,“夏令时”的概念并没有显式地编码到时区中——只是存在可变时区,可以改变它们在给定时间所处的常数偏移量。您可以在上面的输出中看到,我目前在UTC-4,但将在周日切换到UTC-5

因此,如果我想要一个简单的函数,询问是否存在与我的正常时区的偏移量,它将如下所示:

julia> is_offset(zdt::ZonedDateTime) = zdt.zone.offset.dst != Second(0)

julia> is_offset(ZonedDateTime(dt, tz"America/New_York"))
true

julia> is_offset(ZonedDateTime(dt, tz"Europe/Berlin"))
false
所以现在,纽约有一个与“标准”时区的偏移量(我们称之为偏移夏时制),但柏林没有(它昨天转换回来)