Get current date in milliseconds

前端 未结 12 769
别跟我提以往
别跟我提以往 2020-12-04 10:23

Can any one give me an idea how to get the current date in milliseconds?

相关标签:
12条回答
  • 2020-12-04 11:15

    As mentioned before, [[NSDate date] timeIntervalSince1970] returns an NSTimeInterval, which is a duration in seconds, not milli-seconds.

    You can visit https://currentmillis.com/ to see how you can get in the language you desire. Here is the list -

    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
    

    For objective C I did something like below to print it -

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

    Hopw this helps.

    0 讨论(0)
  • 2020-12-04 11:16

    You can just do this:

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

    this will return a value en milliseconds, so if you multiply the resulting value by 1000 (as suggested my Eimantas) you'll overflow the long type and it'll result in a negative value.

    For example, if I run that code right now, it'll result in

    currentTime = 1357234941
    

    and

    currentTime /seconds / minutes / hours / days = years
    1357234941 / 60 / 60 / 24 / 365 = 43.037637652207
    
    0 讨论(0)
  • 2020-12-04 11:18

    There are several ways of doing this, although my personal favorite is:

    CFAbsoluteTime timeInSeconds = CFAbsoluteTimeGetCurrent();
    

    You can read more about this method here. You can also create a NSDate object and get time by calling timeIntervalSince1970 which returns the seconds since 1/1/1970:

    NSTimeInterval timeInSeconds = [[NSDate date] timeIntervalSince1970];
    

    And in Swift:

    let timeInSeconds: TimeInterval = Date().timeIntervalSince1970
    
    0 讨论(0)
  • 2020-12-04 11:23

    @JavaZava your solution is good, but if you want to have a 13 digit long value to be consistent with the time stamp formatting in Java or JavaScript (and other languages) use this method:

    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;
    

    or (if you need a string):

    NSString *timestampString = [NSString stringWithFormat:@"%ld%d",digits ,decimalDigits];
    
    0 讨论(0)
  • 2020-12-04 11:26
    - (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 讨论(0)
  • 2020-12-04 11:28
    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()
        }
    }
    
    0 讨论(0)
提交回复
热议问题