【问题标题】:Nsdateformatter with nsdate for getting exact date in iOSNsdateformatter 和 nsdate 用于在 iOS 中获取准确日期
【发布时间】:2015-05-14 20:14:24
【问题描述】:

我想从 xml 数据中获取日期,该数据位于如下所示的字符串中 “2015 年 2 月 6 日星期五 11:25:00 -0600” 我如何为这种类型的日期设置 nsdateformatter “-0600 是时区”。 请帮帮我

【问题讨论】:

  • 如果您需要帮助,您需要尝试一些广告,然后将代码添加到您的问题中以获得更多帮助。
  • 也许你应该参考the documentation
  • @Zaph 您的所有代码都为我工作,但我没有将时区设为 -0600 "GMT" ,在您的代码中显示为 +0000 ,我该怎么做?

标签: ios nsdateformatter


【解决方案1】:

见:ICU Formatting Dates and Times
另外:Date Field SymbolTable.,具体看“Z”。

Z 时区:ISO8601 基本 hms? / RFC 822 -0800

例子:

NSString *dateString = @"Fri, 06 Feb 2015 11:25:00 -0600";
NSLog(@"dateString: %@", dateString);

输入日期字符串:

dateString:2015 年 2 月 6 日星期五 11:25:00 -0600

NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"E, dd MMM yyyy H:mm:ss Z"];
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date: %@", date);

输出(在 GMT 时区):

日期:2015-02-06 17:25:00 +0000

从日期以特定格式创建字符串:

NSDateFormatter *displayFormatter = [NSDateFormatter new];
[displayFormatter setDateFormat:@"E, dd MMM yyyy H:mm:ss Z"];
[displayFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSString *displayString = [displayFormatter stringFromDate:date];

输出(在 CST 时区):

displayString:2015 年 2 月 6 日星期五 11:25:00 -0600

【讨论】:

  • 您的所有代码都为我工作,但我没有将时区设为 -0600 "GMT" ,在您的代码中显示为 +0000 ,我该怎么做?
  • 使用日期格式化程序设置为您想要的输出格式以及本地(如果需要)使用stringFromDate: 来获取根据需要格式化的字符串日期。 NSLog 只是使用一个默认的日期格式化程序,它实际上只是为了调试。
  • 我将日期转换为字符串使用但时间是 6 小时增加时间。我也设置了时区,但我没有得到正确的时间。如何使用设置的时区管理日期以获得正确的日期和时间?
  • NSDate 将时间保持在格林威治标准时间。其他一切都在格式化。所以 11:25:00 -0600 是 CST,比格林威治标准时间 17:25:00 +0000 早 6 小时。 (Apple 使用的 GMT 是古老的,但与 UTC 相同)为您拥有的字符串和您想要的时区以及您想要的格式提供一个示例。
  • 我想设置日期“Fri, 06 Feb 2015 11:25:00 -0600” 这个格式和时区 GMT -6
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多