【问题标题】:double converted to hours minutes and seconds with NSdateformatter returning wrong answer使用 NSdateformatter 返回错误答案的双重转换为小时分钟和秒
【发布时间】:2012-12-18 04:10:36
【问题描述】:

我正在使用以下代码将值 18900 转换为 hh:mm:ss

不幸的是,返回的值似乎不正确,因为它给了我 06:15:00

谁能告诉我为什么会出错

谢谢

-(NSString*)setHours:(double)result
{

NSLog(@"result %0.2f",result);
NSDate *date = [NSDate dateWithTimeIntervalSince1970:result];
                NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
                [formatter setDateFormat:@"hh:mm:ss"];
                 NSString *localizedString = [formatter stringFromDate:date];
                [formatter release];
                return localizedString;

}

【问题讨论】:

  • 我相信这是自 1970 年 1 月 1 日以来的秒数。所以从那时起你得到的时间是 18900 秒。
  • 18900 是什么意思?它是从 1970 年开始还是 unix 时间戳或仅秒数?
  • 您期望的值是多少?另外,您为 06:15:00 的“结果”传递了什么值?
  • 18900 是一个代表秒的双精度值,所以我预计 5 小时 15 分钟
  • int secs = 结果; int h = 秒 / 3600; int m = 秒 / 60 % 60; int s = 秒 % 60;

标签: ios nsdateformatter


【解决方案1】:

由于您的值是自午夜以来的秒数,因此您不需要日期格式化程序。试试这个:

-(NSString*)setHours:(double)result {
    int secs = result;
    int h = secs / 3600;
    int m = secs / 60 % 60;
    int s = secs % 60;

    NSString *text = [NSString stringWithFormat:@"%02d:%02d:%02d", h, m, s];
}

【讨论】:

  • 感谢大家的回答,但我选择将我的方法更改为这样,因为它简单且有效
【解决方案2】:
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

【讨论】:

    【解决方案3】:

    首先,您必须通过将毫秒除以 1000 将毫秒转换为秒。

       NSTimeInterval result= 18900/1000;
       NSDate *date = [NSDate dateWithTimeIntervalSince1970:result];
       NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
       [formatter setDateFormat:@"HH:mm:ss"];
       NSString *formattedDate=[formatter stringFromDate:date];
       NSLog(@"Formatted Date : %@",formattedDate);
    

    【讨论】:

    • 我认为他没有通过毫秒。我认为他预计是 5:15 而不是 6:15。
    【解决方案4】:

    它会为您提供当前时区的结果,并且时间以 UTC 指定。所以我想你比格林威治标准时间晚了一个小时。

    看看这个问题:NSDate dateWithTimeIntervalSince1970 NOT returning GMT/UTC time

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      相关资源
      最近更新 更多