【问题标题】:NSDateFormatter showing wrong date in ios? [duplicate]NSDateFormatter 在 ios 中显示错误的日期? [复制]
【发布时间】:2016-07-05 17:27:57
【问题描述】:

我有这种日期格式为“2016-03-16”的 NSString,我添加了以下代码以正确的 NSDate 格式获取相同的日期,但它返回“2016-03-15 18:30:00 +0000”。如何在 NSDate 中获得相同的“2016-03-16”?

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    dateFormatter.dateFormat = @"yyyy-MM-dd";
    NSString *datePart = [dateFormatter stringFromDate:dateFromString];//2016-03-16

    NSDate *dateValue = [dateFormatter dateFromString:datePart];
    NSLog(@"%@----",dateValue); //" 2016-03-15 18:30:00 +0000 

【问题讨论】:

  • NSDate 代表确切的日期,大多数人将其称为日期和时间。 3 月 16 日是对日期和时间的不准确描述。系统做出一个假设,认为您的意思是设备的 3 月 16 日凌晨 12 点,并以格林威治标准时间返回该日期和时间。在使用代码解决问题之前,请确保您准确了解您希望在应用中使用的时间。

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

日期格式化程序默认使用您当地的时区。 -[NSDate description] 方法(这是 %@ 调用的方法)使用 UTC。这就是字符串不同的原因。

【讨论】:

  • 我什么都不懂
  • 然后阅读和学习。主要是学习。谷歌为 UTC。您也可以在谷歌上搜索与 UTC 几乎但不完全相同的 GMT。你知道世界又大又圆,而且有时区吗?
【解决方案2】:

您尝试在控制台中打印NSDate 实例。这就是您的代码在控制台中打印默认格式值的原因。

你需要借助@9​​87654323@这个方法从NSDate实例中获取字符串值

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSString *datePart = @"2016-03-16";
NSDate *dateValue = [dateFormatter dateFromString:datePart];
NSLog(@"string convert into Date is - %@",[dateFormatter stringFromDate:dateValue]);

【讨论】:

    【解决方案3】:

    您的本地时区大概是 UTC+5:30。您指定的是日期而不是时间,因此时间暗示为午夜。您当地时区的 16 日午夜是 UTC 时间前一天(15 日)的 18:30,这就是为什么您会得到“2016-03-15 18:30:00 +0000”

    当您使用NSLog(@"%@----",dateValue) 记录日期时,您实际上是在调用[dateValue description],它使用UTC 显示日期。

    您可以使用NSLog(@"%@----",[dateValue descriptionWithCalendarFormat:nil timeZone:[NSTimeZone localTimeZone] locale:nil]),您将看到您当前时区的日期。

    请注意,尽管description 和相关方法(如descriptionWithCalendarFormat)仅用于调试,但您应该使用 NSDateFormatter 将日期转换为字符串。 iOS_Binod 的回答显示了您可以做到这一点的一种方法。

    【讨论】:

    • 完整、清晰,甚至没有一点刻薄或种族主义。 +1
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多