Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 朱莉娅:把Float64转换成Date和DateTime_Julia - Fatal编程技术网

Julia 朱莉娅:把Float64转换成Date和DateTime

Julia 朱莉娅:把Float64转换成Date和DateTime,julia,Julia,在Julia中,我有一个类似于2018.003828474404的浮点数。该浮动应解释为代表日期时间(2018,1,2,9,53,1)。此处,浮动的.003828474404部分表示自2018年初以来的一年时间 如何将Float64转换为DateTime 如何将Float64转换为Date。这将失去精度,并有发生不精确错误的风险(),但就我而言,最近的一天是可以的 尽管这似乎是一个关于一年的固定数量,但2018年之后的0.003828…值代表2018年至2019年之间特定年份的一小部分,因为所有

在Julia中,我有一个类似于
2018.003828474404
的浮点数。该浮动应解释为代表
日期时间(2018,1,2,9,53,1)
。此处,浮动的
.003828474404
部分表示自2018年初以来的一年时间

  • 如何将
    Float64
    转换为
    DateTime
  • 如何将
    Float64
    转换为
    Date
    。这将失去精度,并有发生
    不精确错误的风险()
    ,但就我而言,最近的一天是可以的

  • 尽管这似乎是一个关于一年的固定数量,但2018年之后的
    0.003828…
    值代表2018年至2019年之间特定年份的一小部分,因为所有年份的长度略有不同(例如闰年)<代码>日期认真对待这一事实

    我们可以定义以下函数
    partial_year
    ,以指定精度计算结果(默认为
    纳秒
    ,最具体的是
    日期


    0.003828…
    代表什么?我的第一个猜测是,它表示过去一年的比例,但这没有意义,因为
    0.003828*365=1.397…
    ,这意味着
    DateTime(2018,1,2,9,53)
    (大致),而你说的浮动表示
    DateTime(2018,1,1,12,30,1)
    @ColinTBowers您是对的,这是正确的解释。我必须有一个错误的功能(不包括在上面),我用来转换从DateTime到浮动。我现在已经在问题中更正了。你是如何得到这些的?为什么不直接使用unix时间戳呢?我希望能够在财务计算中使用它,在这种情况下,多年浮动似乎更直观。与$e^{r(2018.5-2016)}$类似,2016年至2018年中期,$e^{r$的利率回报率为$r$。我想我可以使用Unix整数,但我必须不断转换利率或时间(以毫秒为单位),以便两者一致。
    using Dates
    
    function partial_year(period::Type{<:Period}, float::AbstractFloat)
        _year, Δ = divrem(float, 1)
        year_start = DateTime(_year)
        year = period((year_start + Year(1)) - year_start)
        partial = period(round(Dates.value(year) * Δ))
        year_start + partial
    end
    partial_year(float::AbstractFloat) = partial_year(Nanosecond, float)
    
    julia> partial_year(2018.003828474404)
    2018-01-02T09:32:14.768
    
    julia> partial_year(Minute, 2018.003828474404)
    2018-01-02T09:32:00