【问题标题】:Mismatch between String Date and NSDate through dateFromString in XCode通过XCode中的dateFromString字符串日期和NSDate不匹配
【发布时间】:2015-07-12 15:33:16
【问题描述】:

我在 Xcode 中将字符串转换为 NSDate 时遇到问题:我正在尝试获取当前日期,减去一天并将小时设置为中午。这就是我要做的事情(两个 sn-ps 在不同的功能中):

let date = NSDate();
    let dateFormatter = NSDateFormatter()
    //var locale = NSLocale(localeIdentifier: "en_US_POSIX")
    //dateFormatter.locale = locale
    dateFormatter.dateFormat = "dd/mm/yyyy HH:mm"
    dateFormatter.timeZone = NSTimeZone.localTimeZone()
    var string = dateFormatter.stringFromDate(date)

    var localdate = dateFormatter.dateFromString(string)
    var localString = dateFormatter.stringFromDate(localdate!)
    var calendar = NSCalendar.currentCalendar()
    var components = calendar.components(NSCalendarUnit.HourCalendarUnit | NSCalendarUnit.DayCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit, fromDate: localdate!)
    self.dateCriteriaHour = components.hour
    self.dateCriteriaDay = components.day
    self.dateCriteriaMonth = components.month
    self.dateCriteriaYear = components.year

这似乎可行:我得到了当前日期的组成部分。然后我这样做:

var day = String(self.dateCriteriaDay - 1)
                var month = String(currentMonth)
                var year = String(self.dateCriteriaYear)
                var hour = "12:00"
                var date = year + "/" + month + "/" + day + " " + hour
                var dateFormatter = NSDateFormatter()
                dateFormatter.dateFormat = "yyyy/m/dd HH:mm"
                var criteriaDate = dateFormatter.dateFromString(date)

                println(date)
                println(NSDate())
                println(criteriaDate)

这就是事情变得奇怪的地方。这是控制台的输出:

2015/7/11 12:00
2015-07-12 15:21:42 +0000
Optional(2015-01-11 04:00:00 +0000)

我知道设备会在其选定的时区存储时间,所以我不太担心。让我感到困惑的是,除了月份之外,一切都是正确的,即使它直接出现在字符串中。

知道为什么会这样吗?

【问题讨论】:

    标签: ios xcode string nsdate


    【解决方案1】:

    您的日期格式错误。

    dd/mm/yyyy HH:mm
       ^^         ^^
    

    你使用了两次mm。小写m 表示分钟,大写M 表示月份。所以你的 dateFormat 应该是dd/MM/yyyy HH:mm

    【讨论】:

    • 查看本月相关的docs - MMM
    • 这确实是问题所在。非常感谢你们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2015-01-23
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多