【问题标题】:NSDate, Can't get proper date formatNSDate,无法获得正确的日期格式
【发布时间】:2016-05-11 13:18:32
【问题描述】:

这是我试图让我的应用读取的时间戳:2016 年 3 月 3 日星期四 16:06:42 GMT

这是我最接近的,但没有成功:

[df setDateFormat:@"EEE, dd MMM YYYY HH:mm:ss z"];

编辑:我当前的格式打印到/读取:Tue, 02 M02 2016 11:36:57 GMT-5

我有什么遗漏吗?

最终编辑:

我应该刚刚发布了我所有的代码...

    [df setLocale:[NSLocale systemLocale]];

这让我搞砸了。

【问题讨论】:

标签: ios timestamp nsdate nsdateformatter


【解决方案1】:

我认为您的年份不正确。将您的日期格式更改为

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

参见文档on formatter dates here

【讨论】:

  • 你还有同样的问题吗?
  • 更改年份不会影响任何事情
  • 你试过了吗? YYYY 和 yyyy 在日期格式中的含义不同。 yyyy是你想要的
【解决方案2】:

我尝试使用您的日期格式并将其转换为 nsdate 并返回为字符串。它应该适用于您使用的格式字符串。

let time = "Thu, 03 Mar 2016 16:06:42 GMT"
let dateformat = "EEE, dd MMM yyyy HH:mm:ss z"

var dateformatter = NSDateFormatter()
dateformatter.dateFormat = dateformat
dateformatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)

var date = dateformatter.dateFromString(time)

var newTime = dateformatter.stringFromDate(date!)
// newTime = "Thu, 03 Mar 2016 16:06:42 GMT"

编辑:按照 Devster101 的建议,我将日期格式更改为使用小写 ys 表示年份。这是根据this 规范的正确格式,自iOS 7 起使用

【讨论】:

  • 你在哪个地区?
  • 这就是问题所在。系统语言环境不适用于打印。
  • 使用 currentLocale 代替
  • 除此之外,您还应该使用 Devster101 建议的日期格式。
猜你喜欢
  • 1970-01-01
  • 2016-11-17
  • 2017-04-10
  • 2016-03-15
  • 2012-05-27
  • 2011-10-26
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
相关资源
最近更新 更多