【问题标题】:Wrong NSDate conversion from String [duplicate]来自字符串的错误 NSDate 转换 [重复]
【发布时间】:2017-09-27 13:17:38
【问题描述】:

我有日期(NSDate),

我用“EEEE,dd MMM YYYY”格式转换,所以输出是。 “2017 年 5 月 22 日,星期一”

但是当将此字符串转换为日期时,它会给出错误的日期

使用此代码

 NSDateFormatter * formatter = [NSDateFormatter new];
 [formatter setDateFormat:@"EEEE,dd MMM YYYY"];
  NSDate *currentDate = [formatter dateFromString:“Monday,22 May 2017”];

错误的输出是 2016-12-25 18:30:00 +0000

有人可以帮忙吗?

【问题讨论】:

  • 日期格式不正确,

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

日期没有正确的格式,但在这里使用yyyy而不是YYYY

@"YYYY" 是基于周的日历年。

@"yyyy" 是普通日历年。

[formatter setDateFormat:@"EEEE,dd MMM yyyy"];

样品

NSDateFormatter * formatter = [NSDateFormatter new];
[formatter setDateFormat:@"EEEE,dd MMM yyyy"];
NSDate *currentDate = [formatter dateFromString:@"Monday,22 May 2017"];

【讨论】:

  • 是的,问题是“YYYY”。但我无法确定确切的时间而不是原始日期。
  • @Rushi - 日期不会产生准确的答案,如果你再次转换为字符串,它会给出原始答案
  • "但我无法计算出确切的时间而不是原始日期" NSString 上没有时间,所以它默认设置为午夜。但是因为我猜你在印度,格林威治标准时间 5:30,这就解释了 18:30。
  • @Larme 同样的问题
【解决方案2】:

问题出在[formatter setDateFormat:@"EEEE,dd MMM YYYY"];这一行。

yyyy 指定日历年,而 YYYY 指定年份(一年中的第几周)。所以你应该使用yyyy 而不是YYYY。 所以你的代码会是这样的

[formatter setDateFormat:@"EEEE,dd MMM yyyy"];

【讨论】:

  • 为什么要投反对票?
  • 我没有投反对票
  • 我看不出在这里投反对票的理由。
  • 随机人这样做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
相关资源
最近更新 更多