1

我有这样的字符串:“星期二,2013 年 10 月 22 日 1:59 pm EEST”我正在尝试设置这些解析规则:

[formatter setDateFormat: @"EEE, dd MMM yyyy hh:mm a z"];

但这nil会在我执行时返回:

[formatter dateFromString: @"Tue, 22 Oct 2013 1:59 pm EEST"];

这种格式的正确正则表达式是什么?

4

2 回答 2

4
 NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a zzz"];
    [formatter setLocale:locale];
    NSDate* date = [formatter dateFromString:@"Tue, 22 Oct 2013 1:59 PM EEST"];
    NSLog(@"date: %@",date);

O/P:-date: 2013-10-22 10:59:00 +0000
于 2013-10-22T12:26:47.147 回答
1

hh是一个填充小时(在您的情况下为“01”),但您的字符串没有填充小时(只有 "1" ),所以它应该只是h

您可以在下面看到不同格式组件的实际示例(来自此 GitHub gist的输出)。被格式化的日期是1987-08-27 15:24:03

format  result
--------------
    yy  87
  yyyy  1987
     M  8
    MM  08
   MMM  Aug
  MMMM  August
    dd  27
    HH  15
    hh  03    // <--.
     h  3     // <--'--- note the difference
     a  PM
    mm  24
     m  24
    ss  03
     s  3
于 2013-10-22T13:13:09.957 回答