无法获得dateFromString一个特定小时

时间:2015-08-09 11:13:07

标签: swift nsdateformatter

2014/03/30 02:00 - >二时59

我正在解析CSV以训练基本的神经网络。每行对应一分钟。解析2014年剩余时间的代码没有问题,但是一小时会导致零值。符号没有区别。

我也在操场上试过。同样的问题。只需将下面的代码粘贴到游乐场并更改小时或日期即可。

var dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "yyyy/MM/dd HH:mm"

let dateString : String = "2014/03/30 02:53"


if dateFormatter.dateFromString(dateString) == nil {

    print("bad date \(dateString)")


} else {
    let date : NSDate = dateFormatter.dateFromString(dateString)!
    let newDateString = dateFormatter.stringFromDate(date)


}

2014/03/30 02:55,1017,0,1.917,70.8,5.074,99,0,13.84

2014/03/30 02:56,1017,0,2.146,65.26,5.036,99,0,13.84

2014/03/30 02:57,1017,0,1.313,71.2,5.033,99,0,13.84

2014/03/30 02:58,1017,0,1.292,74.9,5.047,99,0,13.84

2014/03/30 02:59,1017,0,2.125,68.76,5.039,99,0,13.83

2014/03/30 03:00,1017,0,1.438,61.02,5.011,99,0,13.84

2014/03/30 03:01,1017,0,2.333,66.73,4.981,99,0,13.84

工作代码:

UTC时区没有夏令时

var dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")

dateFormatter.dateFormat = "yyyy/MM/dd HH:mm"

let dateString : String = "2014/03/30 02:53"


if dateFormatter.dateFromString(dateString) == nil {

    print("bad date \(dateString)")


} else {
    let date : NSDate = dateFormatter.dateFromString(dateString)!
    let newDateString = dateFormatter.stringFromDate(date)


}

1 个答案:

答案 0 :(得分:3)

您无法获得dateFromString因为此特定时间从未存在过。 在2014/03/30由于更改夏令时,您的时区刚刚跳过2:00 - 2:59的时间。