使用NSDateFormatter指定时间偏移量 (-0500)。

5

我有一些类似于以下的日期字符串:

2013-01-25 00:00:00 -0500
2013-01-22 00:00:00 -0700
2013-01-26 00:00:00 -0200

我想使用NSDateFormatter来创建一个NSDate,使用这些字符串。我知道如何使用格式化程序获取日期的第一部分(2013-01-25 00:00:00),但我不知道如何指定偏移部分(-0500-0200等)。以下是获取日期字符串开头的代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd HH':'mm':'ss"];
NSString *dateString = @"2013-01-25 00:00:00"; // <-------- Truncated ----
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"Date: %@", date);

我该如何让它与-0500一起工作?我尝试过SSSZ,但它没有起作用(返回了null日期)。

你想要的是 "日期:2013年01月25日 00:00:00 -0500",我说得对吗? - Dharmbir Singh
@DharmbirChoudhary 我添加了更多日期格式的示例。 - nevan king
我在问你想要的输出是这样的吗:"Date: 2013-01-25 00:00:00 -0500"。我说得对吗? - Dharmbir Singh
@DharmbirChoudhary 不,我想做的是相反的。我已经有一个格式化后的字符串,我想从中创建一个 NSDate 对象。 - nevan king
请告诉我你想要的“日期:……” - Dharmbir Singh
你想将字符串 "2013-01-25 00:00:00" 转换成 NSDate 类型吗? - Dharmbir Singh
1个回答

9

试试这个:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd HH':'mm':'ss ZZZ"];
NSString *dateString = @"2013-01-25 00:00:00 -0500";
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"Date: %@", date);

我得到:

日期: 2013-01-25 05:00:00 +0000

另外,这里是所有日期格式的标准:http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns


非常好,谢谢。ZZZ 是否适用于任何时区信息? - nevan king
很高兴能够帮助。这是完整的日期格式选项标准,供您参考:http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns - iwasrobbed
为什么这总是+000。 - Jitendra
@Jitendra,它始终为+0000,因为它将dateString中提供的偏移时间调整为GMT,即+0000。因此,为什么00:00:00现在是05:00:00,因为它添加了5个小时,因为提供的时间比GMT晚5个小时。 - abouzek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接