gpt4 book ai didi

ios - NSDateFormatter 毫秒错误

转载 作者:技术小花猫 更新时间:2023-10-29 11:01:05 26 4
gpt4 key购买 nike

我想创建一个 NSDateFormatter 来解析这样的日期“2014-05-13 23:31:41.374577”。所以:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSSSSS";
NSString *dateString = @"2014-05-13 23:31:41.374577";
NSDate *date = [formatter dateFromString:dateString];
NSString *anotherDateString = [formatter stringFromDate:date];

但是,anotherDateString2014-05-13 23:31:41.374000。为什么它会截断毫秒?

最佳答案

NSDateFormatter 似乎只适用于毫秒分辨率,因为以下原因:

  • 通过在 CFDateFormatterCreateDateFromString 中设置断点,可以看到这个函数是从 dateFromString::

    调用的
    (lldb) bt
    * thread #1: tid = 0x26d03f, 0x018f47d0 CoreFoundation`CFDateFormatterCreateDateFromString, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1
    frame #0: 0x018f47d0 CoreFoundation`CFDateFormatterCreateDateFromString
    frame #1: 0x0116e0ea Foundation`getObjectValue + 248
    frame #2: 0x0116dfc7 Foundation`-[NSDateFormatter getObjectValue:forString:errorDescription:] + 206
    frame #3: 0x0116879f Foundation`-[NSDateFormatter dateFromString:] + 71
    * frame #4: 0x00002d56 foo`main(argc=1, argv=0xbfffee54) + 182 at main.mm:25
  • CFDateFormatterCreateDateFromString() 来自 CFDateFormatter.c这是开源的。人们可以看到所有的日历计算都是使用 ICU Calendar Classes .

  • calendar.h 中说明Calendar 使用具有毫秒分辨率的 UDate:

    /**
    * <code>Calendar</code> is an abstract base class for converting between
    * a <code>UDate</code> object and a set of integer fields such as
    * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
    * and so on. (A <code>UDate</code> object represents a specific instant in
    * time with millisecond precision. See UDate
    * for information about the <code>UDate</code> class.)
    * ...

关于ios - NSDateFormatter 毫秒错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com