【问题标题】:HH:MM am/pm not fetch from nsdateHH:MM am/pm 不从 nsdate 获取
【发布时间】:2016-10-20 04:46:19
【问题描述】:

我想从 nsdate 获取小时:分钟 AM/PM。

NSDate *globalDateTime; //globaldate is : 2016-10-20 06:49:00 +0000 (UTC) 
NSString *dateString12 = [NSDateFormatter localizedStringFromDate:globalDateTime
                                                          dateStyle:NSDateFormatterShortStyle
                                                          timeStyle:NSDateFormatterFullStyle];    
    NSLog(@"%@",dateString12); 

我得到的结果是 NSString 格式:20/10/16, 2:03:00 PM 印度标准时间

预期结果为 NSString 格式:印度标准时间 20/10/16,下午 6:49:00

或者有什么方法我只能得到 NSString 格式的预期结果:下午 6:49

dateString12 在 NSLog 中是 UTC 格式或其他格式的。它给了我适当的日期,但没有给我适当的时间。

请帮助我如何获得适当的时间。

【问题讨论】:

  • 您的代码没有问题。 dateString12 是当地时间。这就是你想要的,对吗?
  • @rmaddy 是的。但我没有得到当地时间。我认为它正在转换为 UTC 或其他格式。
  • 您正在获取当地时间。这就是NSDateFormatter 默认所做的。当您查看 globalDateTime 的值时,您会看到它的 UTC 时间值,而不是印度时间。无论您在什么设备上运行代码,dateString12 的值都是本地时间。

标签: ios nsdate nsdateformatter


【解决方案1】:

试试这个。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];// change here as per your need
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *stringFromDate = [formatter stringFromDate: globalDateTime];

【讨论】:

  • 我也试过这个代码。它工作正常。我在这里上传截图。
  • 这个答案的真正问题是它与所提出的问题无关。 OP只是误解了日期的工作方式。问题中的代码很好。
  • 问题是 [NSDATE date] 显示时间为 05:10:10 而 stringfromDate 显示为 10:37AM 。我想要 stringfromdate = 05:10AM
  • @iosdeveloper 不,你没有。您似乎不明白 NSDate 的日志输出以 UTC 显示日期。如果你想要当地时间,只需使用NSDateFormat 就可以了。
  • @iosdeveloper 欢迎。
猜你喜欢
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多