【问题标题】:Convert date to timestamp in iOS在iOS中将日期转换为时间戳
【发布时间】:2014-02-03 12:29:09
【问题描述】:

如何将任何给定的日期转换为毫秒?例如 2014-01-23 到时间戳转换。

NSDate *date = [dateFormatter dateFromString:@"2014-01-23"];
NSLog(@"date=%@",date);
NSTimeInterval interval  = [date timeIntervalSince1970];
NSLog(@"interval=%f",interval);
NSDate *methodStart = [NSDate dateWithTimeIntervalSince1970:interval];
[dateFormatter setDateFormat:@"yyyy/mm/dd "];
NSLog(@"result: %@", [dateFormatter stringFromDate:methodStart]);

输出结果:1970/30/01

【问题讨论】:

    标签: ios date nsdate nstimeinterval


    【解决方案1】:

    NSTimeinterval 实际上是一个双精度数,是自特定日期以来的秒数(在您的情况下,是 1970 年初)

    【讨论】:

    • 结果应该是 2014-01-23,为什么是 1970/30/01
    • 我认为您的初始 dateFormatter 配置不正确。
    【解决方案2】:

    试一试。 “mm”代表分钟,“MM”代表月。

    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init] ;
    [dateFormatter setDateFormat:@"yyyy-MM-dd"] ;
    NSDate *date = [dateFormatter dateFromString:@"2014-01-23"] ;
    NSLog(@"date=%@",date) ;
    NSTimeInterval interval  = [date timeIntervalSince1970] ;
    NSLog(@"interval=%f",interval) ;
    NSDate *methodStart = [NSDate dateWithTimeIntervalSince1970:interval] ;
    [dateFormatter setDateFormat:@"yyyy/MM/dd "] ;
    NSLog(@"result: %@", [dateFormatter stringFromDate:methodStart]) ;
    

    【讨论】:

    • 嘿,我正在为时间苦苦挣扎,就像我有一个特定的日期和时间,例如 2018 年 1 月 1 日上午 9:00 如何获取具有特定时间的特定日期的时间戳。 .
    【解决方案3】:

    [date1 timeIntervalSinceDate:date2] 将从两个 NSDate 对象返回秒数。

    double seconds = [date1 timeIntervalSinceDate:date2];
    double milliSecondsPartOfCurrentSecond = seconds - [seconds intValue];
    

    milliSecondsPartOfCurrentSecond

    【讨论】:

      【解决方案4】:

      注意:- UNIX 时间戳格式包含 13 位数字,因此我们需要将结果乘以 1000。 并且时间戳必须是 UTC ZONE 而不是我们当地的时区。

      - (void)GetCurrentTimeStamp
          {
              NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
              [objDateformat setDateFormat:@"yyyy-MM-dd"];
              NSString    *strUTCTime = [self GetUTCDateTimeFromLocalTime:@"2014-01-23"];
              NSDate *objUTCDate  = [objDateformat dateFromString:strUTCTime];
              long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);
              NSLog(@"Local Time = %@---- UTC = %@ ----- TimeSatmp = %ld  ---- TimeStamp = %lld",strTime,strUTCTime,unixTime,milliseconds);
          }
      
       - (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;
          }
      

      【讨论】:

        【解决方案5】:

        斯威夫特

        将当前日期/时间转换为时间戳:

        // current date and time
        let someDate = Date()
        
        // time interval since 1970
        let myTimeStamp = someDate.timeIntervalSince1970
        

        另见

        【讨论】:

          猜你喜欢
          • 2016-11-26
          • 1970-01-01
          • 2020-10-19
          • 1970-01-01
          • 2017-04-25
          • 2022-01-08
          相关资源
          最近更新 更多