【问题标题】:Format date to secounds将日期格式化为秒
【发布时间】:2015-10-02 10:55:07
【问题描述】:

背景:我将日期存储在文件中。

我想做什么:我想以秒为单位计算两个日期之间的差异。我找不到任何方法来做到这一点。我的日期格式如下:

2015-23-02-12-23-43

【问题讨论】:

  • 你所说的秒是什么意思。请至少发布一个问题,并详细描述您尝试尝试的实际情况以及您获得的输出类型。如果您没有时间或无法解释您的问题,您如何获得解决方案
  • 我将日期存储在一个文件中。我想比较日期并计算它们之间的差异。所以我想将日期转换为秒,这样我就可以计算两个日期之间的差异。 @NitinGohel
  • 所以你想要总秒数,而不是年/月/日/小时/分钟/秒?
  • 您需要清楚连贯地说明您的需求,或者删除您的问题。
  • 请编辑您的问题以澄清您的要求。

标签: ios objective-c date


【解决方案1】:

试试这个:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-mm-dd-hh-mm-ss"];
NSDate *date = [dateFormatter dateFromString:string1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

【讨论】:

    【解决方案2】:

    试试这个:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date = [dateFormatter dateFromString:EnterYourStringHere];
    NSString *str = [dateFormatter stringFromDate:date];
    

    【讨论】:

      【解决方案3】:

      如果你只需要几秒钟,那么使用

      NSTimeInterval dateInterval = [date timeIntervalSince1970];
      

      然后

      NSString secondsString = [NSString stringWithFormat: @"%.0f", dateInterval];
      

      编辑:

      如果您有一个充满日期字符串的文件,看起来像您的示例 2015-23-02-12-23,那么您可以使用如下代码:

      NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
      [myFormatter setDateFormat:@"yyyy-mm-dd-hh-mm-ss"];
      
      //an example - you'll read from your file
      NSString *aDateString = @"2015-23-02-12-23"; 
      
      NSDate aDate = [myFormatter dateFromString: aDateString];
      
      NSTimeInterval dateSeconds = [aDate timeIntervalSince1970];
      

      这将为您提供 dateSeconds 作为双精度浮点数,这是数字日期计算的标准,因为它处理秒的小数部分。然后,您可以对日期的时间间隔进行数字比较。

      请注意,大多数 UNIX 系统使用 timeIntervalSince1970 方法返回的数值,但 Mac 和 iOS 使用 timeIntervalSinceReferenceDate 方法返回的数值日期值。这两种方法有不同的“纪元日期”,或者说它们从零开始计数的日期。

      timeIntervalSince1970 uses midnight on Jan 1, 1970 (GMT)
      timeIntervalSinceReferenceDate uses midnight on Jan 1, 2001 (GMT)
      

      您使用哪种方法取决于您,请确保在所有情况下都使用相同的方法。

      顺便说一句,您的日期字符串格式很糟糕。将所有这些 2 位数字用破折号分隔并不能让读者有任何方法来区分月/日/小时/分钟/秒。都是一团乱麻。最好使用标准日期格式。

      在美国,日期通常以 mm/dd/yyyyy(或 yyyy/mm/dd,甚至 yyyy/dd/mm)的形式显示,时间以 hh:mm:ss 的形式显示,因此在“mm/ dd/yyyyy hh:mm:ss" 格式你会得到:"09/02/2015 13:09:39" (我使用人类可读的日期格式字符串进行讨论,而不是那些旨在设置日期格式化程序的字符串.)

      【讨论】:

      • 我想将2015-09-02-13-09-39这种格式的日期转换为秒。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      相关资源
      最近更新 更多