2017-02-28 63 views
2

有没有一个函数/库/简单的代码片段呢?如何将DateTime转换为F#中的Unix TimeStamp?

我已经找到答案为Python例如,而不是F#感谢

我发现轮在这里 http://tryfs.net/snippets/snippet-r6

open System 

let toDateTime (timestamp:int) = 
    let start = DateTime(1970,1,1,0,0,0,DateTimeKind.Utc) 
    start.AddSeconds(float timestamp).ToLocalTime() 
+3

https://msdn.microsoft.com/en-us/library/system.datetimeoffset.fromunixtimeseconds.aspx – ildjarn

+2

在.NET 4.6.x中添加了从UnixTime转换到UnixTime的方法(在上面的链接中)。所以请定位最新版本。 – s952163

回答

4

其他方式你应该要小心,因为timestamp可能是别的东西比int。但是,在.NET 4.6.x中,您应该能够使用注释中提到的功能。

.NET 4.6.2

下面是一个例子:

open System 
let unix = DateTimeOffset(DateTime.Now).ToUnixTimeSeconds() //val unix : int64 = 1488254491L 
let dt = DateTimeOffset.FromUnixTimeSeconds(unix) //val dt : DateTimeOffset = 2017/02/28 4:01:31 +00:00 
dt.LocalDateTime //val it : DateTime = 2017/02/28 13:01:31 

由于ToUnixTimeSecondsFromUnixTimeSecondsDateTimeOffset与操作,工作或在必要时转换回/来回DateTime

顺便说一下,我发现它在.fsx文件中的intellisense是这些方法(但工程)有点片状。在.fs文件中是可以的。

+1

如果我需要使用早期版本(#NET 4.5),该怎么办? –

+0

@FaguiCurtain我不明白你的问题,你展示了一个关于如何在你的问题中计算它的片段,在SO上也有很多类似的代码片段。基本上,你加回自时代以来的时间。 – s952163