Ich habe eine einfache Klasse erstellt, die den Unix-Timestamp bekommt. Beim ersten Aufruf gibt es den Zeitstempel zurück, aber danach gibt es immer den gleichen Wert zurück, den es beim ersten Mal zurückgegeben hat, so wie es zwischengespeichert wurde.Timestamp.UTCNow ist nicht auf dem neuesten Stand
Was geht hier vor?
using System;
using System.Collections;
public class Timestamp {
public static float now {
get {
return (float)(DateTime.UtcNow.Subtract(new DateTime (1970, 1, 1))).TotalSeconds;
}
}
}
Timestamp.now liefert immer den gleichen Wert
Edit:
using UnityEngine;
using System;
using System.Collections;
public static float now {
get {
Debug.Log(DateTime.UtcNow); // 1
Debug.Log(DateTime.UtcNow.Subtract (new DateTime (1970, 1, 1))); // 2
float ts = (float)(DateTime.UtcNow.Subtract (new DateTime (1970, 1, 1))).TotalSeconds;
Debug.Log(ts.ToString("F")); // 3
return ts;
}
}
}
1) 5/8/2016 11:44:57 Uhr im ersten Aufruf gedruckt und 5/8/2016 11:45:05 PM beim zweiten Anruf, so ist es auf dem neuesten Stand
2) gedruckt 16929.23: 44: 57.2918073 beim ersten Anruf und 16929.23: 45: 05.9735794 beim zweiten Anruf, so ist es auf dem neuesten Stand
3) immer 1462751000,00 gedruckt
Die Methode 'Subtract' von' DateTime.UtcNow' gibt eine 'TimeSpan' zurück, die Sie in einen 'float' umgewandelt haben, der nicht korrekt ist. – t0mm13b
Warum konvertieren Sie das Ergebnis in einen "float"? –
@ t0mm13b Der Wert der Eigenschaft 'TotalSeconds' wird umgewandelt, der Typ 'double' hat und in 'float' konvertiert werden kann. – hvd