2017-02-28 1 views
2

Y at-il une fonction/bibliothèque/extrait facile à faire?Comment faire pour convertir DateTime en Unix TimeStamp en F #?

J'ai trouvé des réponses pour Python par exemple, mais pas F # Merci

J'ai trouvé l'inverse ici 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

Les méthodes de conversion de et vers UnixTime (dans le lien ci-dessus) ont été ajoutées dans .NET 4.6.x. Donc s'il vous plaît cibler la version la plus récente. – s952163

Répondre

4

Vous devez être prudent, car timestamp peut-être autre chose que int. Cependant, dans .NET 4.6.x, vous devriez pouvoir utiliser les fonctions mentionnées dans les commentaires.

.NET 4.6.2

Voici un exemple:

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 

Comme ToUnixTimeSeconds et FromUnixTimeSeconds fonctionne sur DateTimeOffset, que ce soit le travail avec cela ou convertir avant/arrière pour DateTime si nécessaire. Par ailleurs, je trouve que dans le fichier .fsx l'intellisense est un peu flou pour ces méthodes (mais fonctionne). Dans les fichiers .fs c'est OK.

+1

Que faire si j'ai besoin d'utiliser une version antérieure (#NET 4.5)? –

+0

@FaguiCurtain Je ne comprends pas votre question, vous vous montrez un extrait sur la façon de le calculer dans votre question, il y a aussi quelques extraits de code similaires sur SO. Fondamentalement, vous ajoutez le temps depuis l'époque. – s952163