【问题标题】:iOS dateFormatter dateFromString month issueiOS dateFormatter dateFromString 月份问题
【发布时间】:2011-11-11 00:44:41
【问题描述】:

希望这只是一个快速的,我错过了一些简单的东西......

我有一个 NSDateFormatter,用于将字符串 2011-11-10 转换为 Date 对象。

NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"YYYY-MM-DD"];

// input of 2011-11-10, output of 2011-01-10 00:00:00 +0000        
[appointment setDate:[fmtDate dateFromString:
  [tempAppointment objectForKey:@"date"]
]];

NSDateFormatter 的返回值存储在 managedObjectContext 中。我的问题是 dateFormatter 将日期返回为 2011-01-10 00:00:00 +0000

为什么将月份从 11 月缩短到 1 月?它可以保留年份和日期,但不能保留月份。

我是否需要在存储日期时包括小时?还是和我设置的格式有关?

【问题讨论】:

    标签: objective-c ios nsdateformatter


    【解决方案1】:

    为“使用格式字符串指定自定义格式”部分中指定的here 格式尝试格式@"yyyy-MM-dd"。它有一个示例并将 YYYY 列为常见错误。

    【讨论】:

    • 这没什么区别,我还在 2011-01-10 00:00:00 +000
    • 啊我错过了d!对,我更改了 YYYY -> yyyy 但修复它的是 DD -> dd。谢谢!
    【解决方案2】:

    您的日期格式字符串使用 YYYY 时不正确。试试 yyyy-M-d 或 yyyy-MM-dd

    NSString *dateString = @"2011-11-10";
    
    NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
    [fmtDate setDateFormat:@"yyyy-M-d"];
    
    NSDate *date = [fmtDate dateFromString:dateString];
    NSLog(@"date: %@", date);
    

    输出:

    2011-11-10 20:01:40.638 Craplet[81514:707] date: 2011-11-10 05:00:00 +0000
    

    见:

    http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多