Grundsätzlich möchte ich das unten in .NET tun, aber ich habe keine Ahnung, wie.new Date(). GetTime() in .NET
var d = new Date().getTime() + " milliseconds since 1970/01/01"
Grundsätzlich möchte ich das unten in .NET tun, aber ich habe keine Ahnung, wie.new Date(). GetTime() in .NET
var d = new Date().getTime() + " milliseconds since 1970/01/01"
Sie würden so etwas tun ...
var ts = DateTime.UtcNow - new DateTime(1970,1,1);
var result = String.Format("{0} milliseconds since 1970/01/01", ts.TotalMilliseconds);
Vielen Dank! Subtraktion habe ich völlig vergessen. Ich konnte TotalMilliseconds nicht finden und blieb bei Millisekunden hängen. –
Ich möchte nur darauf hinweisen, dass Sie auch UTC-Zeiten verwenden sollten. –
Ich bin nicht wirklich sicher, dass Sie ein UNIX-Datum in .NET bekommen, aber Sie haben DateTime.Now als equvivalent von new Date() (oder eine neue Datetime())
Wie Sie bekam im Kommentar, dann ist es möglich, ein Timespan-Objekt zu erhalten, indem der etwas in den Zeilen doning ...
(Erste Antwort)
DateTime.Now.Subtract(new DateTime(1970,1,1)).TotalMilliseconds
das Endergebnis zum Wohle der Menschheit Hinzufügen ...
var d = DateTime.Now.Subtract(new DateTime(1970,1,1).ToUniversalTime()).TotalMilliseconds + " milliseconds since 1970/01/01";
P.S. Wo ist Jon Skeet mit seinem Wissen der Zeit, wenn wir ihn brauchen: P
Liebe John Skeet Kampf Schrei um Hilfe: D – Arcturus
Ich möchte nur, dass Sie auch in UTC konvertieren –
Sie können dort über DateTime.Subtract
über die DateTime
und TimeSpan
Strukturen bekommen, etwas wie:
TimeSpan ts = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1));
ts.TotalMilliseconds; // ...since The Epoch
Sie sollten wahrscheinlich 'DateTime.UtcNow' verwenden oder die Zeit vor der Subtraktion in UTC umwandeln. –
@Daniel: Ganz richtig du bist, behoben. –
DateTime dt = new DateTime();
dt = DateTime.Now;
TimeSpan dtNow = new TimeSpan();
dtNow = dt.Subtract(new DateTime(1970, 1, 1));
Console.WriteLine(dtNow.TotalMilliseconds);
Bit langatmig im Vergleich zu anderen, aber es funktioniert.
Sie sollten 'DateTime.UtcNow' verwenden oder' dt.ToUniversalTime() 'aufrufen. Außerdem haben Sie zwei Konstruktoraufrufe, die überflüssig sind. –
Vielen Dank, dass Sie darauf hingewiesen haben. : o) –
Ich schrieb eine Erweiterungs-Methode für mich selbst vor einer Weile.
double ticks = DateTime.UtcNow.UnixTicks();
Umsetzung::
Es ist wie so verwendet wird
public static class ExtensionMethods
{
// returns the number of milliseconds since Jan 1, 1970
// (useful for converting C# dates to JS dates)
public static double UnixTicks(this DateTime dt)
{
DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = dt.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
return ts.TotalMilliseconds;
}
}
Ihr Beispiel wird nicht kompiliert. Vielleicht meintest du 'double ticks = DateTime.UtcNow.UnixTicks();'? –
Ja - danke, ich glaube, ich steckte in Javascript fest! –
Wie wäre es
var s = string.format("{0} milliseconds since 1970/01/01",
(DateTime.Now - DateTime.Parse("1970/01/01")).TotalMilliseconds);
Warum das Datum als String hartcodieren? Außerdem sollten Sie die Berechnung in UTC durchführen. –
Subtraction die Art und Weise, es zu tun ist, aber alle Antworten habe ich gesehen, soweit nicht richtig auf UTC einstellen.
Sie wollen so etwas wie:
var ts = DateTime.UtcNow - new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
var result = String.Format("{0} milliseconds since 1970/01/01", ts.TotalMilliseconds);
BTW eng verwandt mit ... http://stackoverflow.com/questions/906034/calculating-future-epoch-time-in-c – cyberzed
Die 6 Antworten Ich sehe, dass die von Ihnen akzeptierte DateTime.Now anstelle von DateTime.UtcNow verwendet. Ich glaube, das wird dazu führen, dass Ihre Berechnung um +3.600.000 Millisekunden mehr als die Hälfte des Jahres in den USA falsch ist. Diese Diskrepanz spielt in Ihrem speziellen Fall keine Rolle, muss jedoch beachtet werden. – JasDev
Tatsächlich wird der Fehler in lokalen Zeiten in den USA permanent größer sein, da unabhängig davon, ob DST aktiv ist oder nicht, alle Zeitzonen weit von GMT/UTC entfernt sind. Also, du hast recht, man muss DateTime.UtcNow benutzen. –