【问题标题】:Objective C Timestamp目标 C 时间戳
【发布时间】:2013-09-16 01:58:30
【问题描述】:

我发现了许多时间戳转换,它们都有效,但问题是,当我将代码转换为日期的文本形式时,我总是提前 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]);

并获得正确的时间戳。

那么我在哪里搞砸了。

【问题讨论】:

    标签: ios objective-c unix-timestamp


    【解决方案1】:

    这里已经回答了这个问题:NSDateFormatter dateFromString gives the wrong date

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

    来自apple documentation

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

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

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

    【讨论】:

    • 我很欣赏这一点,我想当我浏览小写字母 y 时并没有引起我的注意。简单的事情,我想念。,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多