【问题标题】:Why does this dateFormatter log (null)为什么这个 dateFormatter 日志(空)
【发布时间】:2016-01-26 05:06:25
【问题描述】:

我正在尝试使用以下代码将 nsstring 转换为日期:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-mm-dd hh:mm:ss";
NSDate *date = [dateFormatter dateFromString:quota.datetime];

字符串 quota.datetime 如下所示:

2016-02-17 22:00:00

但是,当我 NSLog 日期时,我得到 (null)。为什么?

【问题讨论】:

    标签: ios objective-c nsdate


    【解决方案1】:

    yyyy - 4 位数年份。
    mm - 2 位数分钟。嗯。您在月份和分钟都使用它。这不可能。两位数的月份是MM
    dd - 两位数的日期。
    hh - 两位数的 12 小时。嗯。您的日期字符串采用 24 小时制。规范说这需要HH.
    ss - 2 位秒。

    因此,根据查看文档和您希望解析的日期字符串,您需要以下格式:

    yyyy-MM-dd HH:mm:ss
    

    【讨论】:

    • 所以我把月份改成了 MM。我仍然是空的。如果 dateFormatter 在一个块中,它会有所不同吗?
    • 您是否也将hh 更改为HH,正如我在回答中显示的那样?
    【解决方案2】:

    试试这样。这将对您有所帮助。

    NSDateFormatter *formatter;
    
    if (!formatter){
         formatter= [[NSDateFormatter alloc] init];
         [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//2015-09-04 09:34:00
     }
    
     NSDate *date = [formatter dateFromString:@"2015-09-04 09:34:00"];   
    

    以下是日期格式字符串中常用的说明符:

    y = year
    Q = quarter
    M = month
    w = week of year
    W = week of month
    d = day of the month
    D = day of year
    E = day of week
    a = period (AM or PM)
    h = hour (1-12)
    H = hour (0-23)
    m = minute
    s = second
    

    点击此链接了解更多关于DateForamtter and Date Format的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-14
      • 2018-09-05
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多