2017-02-28 64 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