wake-up-neo.com

Aktuelles Datum in Millisekunden abrufen

Kann mir jemand eine Idee geben, wie ich das aktuelle Datum in Millisekunden erhalten kann?

83
siva

Es gibt mehrere Möglichkeiten, dies zu tun, obwohl mein persönlicher Favorit ist: 

CFAbsoluteTime timeInSeconds = CFAbsoluteTimeGetCurrent();

Mehr über diese Methode erfahren Sie hier . Sie können auch ein NSDate-Objekt erstellen und die Uhrzeit abrufen, indem Sie timeIntervalSince1970 aufrufen, das Sekunden seit dem 1.1.1970 zurückgibt:

NSTimeInterval timeInSeconds = [[NSDate date] timeIntervalSince1970];

Und in Swift: 

let timeInSeconds: TimeInterval = Date().timeIntervalSince1970
94
Pawel

Da das NSTimeInterval für mich direkt zu einem langen Überlauf umgewandelt wurde, musste ich stattdessen zu lange weitern.

long long milliseconds = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);

Das Ergebnis ist ein 13-stelliger Zeitstempel wie in Unix.

58
wileymab
NSTimeInterval milisecondedDate = ([[NSDate date] timeIntervalSince1970] * 1000);
10
Eimantas
extension NSDate {

    func toMillis() -> NSNumber {
        return NSNumber(longLong:Int64(timeIntervalSince1970 * 1000))
    }

    static func fromMillis(millis: NSNumber?) -> NSDate? {
        return millis.map() { number in NSDate(timeIntervalSince1970: Double(number) / 1000)}
    }

    static func currentTimeInMillis() -> NSNumber {
        return NSDate().toMillis()
    }
}
7
Siamaster

Sie können dies einfach tun:

long currentTime = (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]);

dies gibt einen Wert in Millisekunden zurück. Wenn Sie also den resultierenden Wert mit 1000 multiplizieren (wie von meinem Eimantas vorgeschlagen), überlaufen Sie den langen Typ, und der Wert wird negativ.

Wenn ich zum Beispiel diesen Code jetzt ausführte, führt dies zu einem Ergebnis

currentTime = 1357234941

und 

currentTime /seconds / minutes / hours / days = years
1357234941 / 60 / 60 / 24 / 365 = 43.037637652207
6
JavaZava

@JavaZava Ihre Lösung ist gut, aber wenn Sie einen 13-stelligen Wert haben möchten, der mit der Formatierung des Zeitstempels in Java oder JavaScript (und anderen Sprachen) übereinstimmt, verwenden Sie diese Methode:

NSTimeInterval time = ([[NSDate date] timeIntervalSince1970]); // returned as a double
long digits = (long)time; // this is the first 10 digits
int decimalDigits = (int)(fmod(time, 1) * 1000); // this will get the 3 missing digits
long timestamp = (digits * 1000) + decimalDigits;

oder (wenn Sie einen String benötigen):

NSString *timestampString = [NSString stringWithFormat:@"%ld%d",digits ,decimalDigits];
5
Itai Hanski

Wie bereits erwähnt, [[NSDate date] timeIntervalSince1970] gibt ein NSTimeInterval zurück. Dies ist eine Dauer in Sekunden, nicht in Millisekunden.

Besuchen Sie https://currentmillis.com/ , um zu erfahren, wie Sie die gewünschte Sprache erhalten. Hier ist die Liste -

ActionScript    (new Date()).time
C++ std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_Epoch()).count()
C#.NET  DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
Clojure (System/currentTimeMillis)
Excel / Google Sheets*  = (NOW() - CELL_WITH_TIMEZONE_OFFSET_IN_HOURS/24 - DATE(1970,1,1)) * 86400000
Go / Golang time.Now().UnixNano() / 1000000
Hive*   unix_timestamp() * 1000
Java / Groovy / Kotlin  System.currentTimeMillis()
Javascript  new Date().getTime()
MySQL*  UNIX_TIMESTAMP() * 1000
Objective-C (long long)([[NSDate date] timeIntervalSince1970] * 1000.0)
OCaml   (1000.0 *. Unix.gettimeofday ())
Oracle PL/SQL*  SELECT (SYSDATE - TO_DATE('01-01-1970 00:00:00', 'DD-MM-YYYY HH24:MI:SS')) * 24 * 60 * 60 * 1000 FROM DUAL
Perl    use Time::HiRes qw(gettimeofday); print gettimeofday;
PHP round(microtime(true) * 1000)
PostgreSQL  extract(Epoch FROM now()) * 1000
Python  int(round(time.time() * 1000))
Qt  QDateTime::currentMSecsSinceEpoch()
R*  as.numeric(Sys.time()) * 1000
Ruby    (Time.now.to_f * 1000).floor
Scala   val timestamp: Long = System.currentTimeMillis
SQL Server  DATEDIFF(ms, '1970-01-01 00:00:00', GETUTCDATE())
SQLite* STRFTIME('%s', 'now') * 1000
Swift*  let currentTime = NSDate().timeIntervalSince1970 * 1000
VBScript / ASP  offsetInMillis = 60000 * GetTimeZoneOffset()
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now()) * 1000 - offsetInMillis + Timer * 1000 mod 1000

Für Objective C habe ich etwas gemacht, um es auszudrucken -

long long mills = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);
 NSLog(@"Current date %lld", mills);

Hopw das hilft.

2
Aniket Thakur

Konvertieren Sie NSTimeIntervalmilisecondedDate in nsstring und konvertieren Sie danach in int.

1
vikash

Verwenden Sie dies, um die Zeit in Millisekunden (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]) abzurufen.

0
Tanvi Jain

Eine Verlängerung am Tag ist wahrscheinlich der beste Weg dazu. 

extension NSDate {
    func msFromEpoch() -> Double {
        return self.timeIntervalSince1970 * 1000
    }
}
0
joslinm
- (void)GetCurrentTimeStamp
    {
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyy-MM-dd"];
        NSString    *strTime = [objDateformat stringFromDate:[NSDate date]];
        NSString    *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter.
        NSDate *objUTCDate  = [objDateformat dateFromString:strUTCTime];
        long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);

        NSString *strTimeStamp = [NSString stringWithFormat:@"%lld",milliseconds];
        NSLog(@"The Timestamp is = %@",strTimeStamp);
    }

 - (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        NSDate  *objDate    = [dateFormatter dateFromString:IN_strLocalTime];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        NSString *strDateTime   = [dateFormatter stringFromDate:objDate];
        return strDateTime;
    }
0
Vicky

Sie können die folgenden Methoden verwenden, um das aktuelle Datum in Millisekunden abzurufen.

[[NSDate date] timeIntervalSince1970];

ODER 

double CurrentTime = CACurrentMediaTime(); 

Quelle: iPhone: Wie bekomme ich aktuelle Millisekunden?