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)
并获得正确的时间戳.
所以我在哪里弄乱.
这个问题已在这里得到解答: 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",这就是我运行此测试时的情况.