9

我发现了许多时间戳转换,它们都有效,但问题是,当我将代码转换为日期的文本形式时,我总是提前 4 个月出来。

这是拉当前的星期几、日期和时间。我之所以这样设置,是因为我使用 DateTime Picker 选择了日期。这只是我的 viewDidLoad 来拉今天的日期。

NSDate *myDate = [[NSDate alloc] init];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"cccc, MMMM dd, YYYY, hh:mm aa"];
NSString *prettyVersion = [dateFormat stringFromDate:myDate];
date.text = prettyVersion;

现在是时间戳转换,以将 prettyVersion 转换为 timeIntervalSince1970

NSDate *startdates = [dateFormat dateFromString:prettyVersion];
NSLog(@"Timestamp %0.0f",[startdates timeIntervalSince1970]);

NSLog 输出“时间戳 1356317580”,转换后为 Mon, 24 Dec 2012 02:53:00 GMT

现在我可以做到这一点

          NSLog(@"Timestamp2  %0.0f",[myDate timeIntervalSince1970]);

并获得正确的时间戳。

所以我在哪里搞砸了。

4

1 回答 1

7

这个问题已经在这里得到了回答: NSDateFormatter dateFromString give the wrong date

但它的要点是在您的日期 dateFormat 中,您应该使用“yyyy”而不是“YYYY”。

苹果文档

一个常见的错误是使用 YYYY。yyyy 指定日历年,而 YYYY 指定年份(“一年中的一周”),用于 ISO 年-周日历。在大多数情况下,yyyy 和 YYYY 产生相同的数字,但它们可能不同。通常,您应该使用日历年。

[dateFormat setDateFormat:@"cccc, MMMM dd, yyyy, hh:mm aa"];

然后对我来说,它会格式化为“2013 年 9 月 15 日,星期日,晚上 7:24”,这就是我运行它进行测试时的样子。

于 2013-09-16T02:28:11.980 回答