Objective C时间戳

Dun*_*uny 9 objective-c unix-timestamp ios

我发现了很多时间戳转换,它们都可以工作,但问题是,当我把代码放到日期的文本形式时,我总是提前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;
Run Code Online (Sandbox Code Playgroud)

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

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

NSLog输出"Timestamp 1356317580",转换后是星期一,2012年12月24日02:53:00 GMT

现在我可以做到这一点

          NSLog(@"Timestamp2  %0.0f",[myDate timeIntervalSince1970]);
Run Code Online (Sandbox Code Playgroud)

并获得正确的时间戳.

所以我在哪里弄乱.

Nic*_*ckH 7

这个问题已在这里得到解答: NSDateFormatter dateFromString给出了错误的日期

但它的要点在于你的日期dateFormat,你应该使用"yyyy"而不是"YYYY".

苹果文档:

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

[dateFormat setDateFormat:@"cccc, MMMM dd, yyyy, hh:mm aa"];
Run Code Online (Sandbox Code Playgroud)

然后对我来说它将格式化为"2013年9月15日星期日,下午07:24",这就是我运行此测试时的情况.

  • 我赞成这一点,我猜我在浏览小写字母的时候并没有引起我的注意.简单的事情,我想念,谢谢. (2认同)