【问题标题】:Have troubles with NSDateFormatter while parsing解析时遇到 NSDateFormatter 问题
【发布时间】:2015-05-15 18:06:37
【问题描述】:

这是日期示例:2015 年 5 月 13 日星期三 16:10:00 CEST

我的格式化程序无法正常工作

@"EEE, dd MMM yyyy HH:mm:ss vvvv"

我应该改变什么?

UPD:完整代码

NSString* formattedDayWithString(NSString* date){
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [NSLocale currentLocale];
NSString *localeId = [locale displayNameForKey:NSLocaleIdentifier
                                         value:[locale localeIdentifier]];

SLog(@"%@ date:%@", localeId, date);
[inputFormatter setLocale: locale];
[inputFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss vvvv"];
NSDate *formattedDate = [inputFormatter dateFromString: date];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc]init];
[outputFormatter setDateFormat:@"d'.' MMMM yyyy"];

NSString* dateStr = [[NSString alloc] initWithFormat: @"%@",[outputFormatter stringFromDate:formattedDate]];
return dateStr;

}

【问题讨论】:

  • 在您的问题中显示实际代码。并指出您所在的地区。
  • 学习time zone names(玩得开心!)
  • 我更新了问题
  • 您在哪个地区?顺便说一句 - 将格式化程序的语言环境设置为当前语言环境是没有意义的,因为这是默认设置。
  • 当你运行代码时会发生什么?每个变量你会得到什么?

标签: objective-c nsdateformatter


【解决方案1】:

“CEST”是一种“短特定非位置格式”,对应的 日期字段符号是“z”,而不是“v”:

[inputFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];

此外,您可能必须将日期格式化程序区域设置显式设置为“en_GB” 如Nsdateformatter + Timezone issue 中所述。

【讨论】:

  • @Leonid:它对我有用。您是否也将语言环境设置为 en_GB?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2021-03-28
相关资源
最近更新 更多