gpt4 book ai didi

ios - NSDate 在 Swift 中返回错误的日期

转载 作者:可可西里 更新时间:2023-11-01 02:17:58 28 4
gpt4 key购买 nike

今天是 2016 年 2 月 1 日,我刚刚打开我的工作应用程序继续我的工作,这让我感到震惊。

Image

是date的collection view,一月份没发现有什么问题,因为还不到一个月。

这是代码,

func dF(someDate:NSDate) -> (String){
let monthFormat = NSDateFormatter()
let dayFormat = NSDateFormatter()
monthFormat.dateFormat = "MMM"
dayFormat.dateFormat = "D"

let aMonth = monthFormat.stringFromDate(someDate)
let aDay = dayFormat.stringFromDate(someDate)

//concatenate strings
let conString = aMonth + " " + aDay

return (conString)
}


//from today to 7th day, to be used in ScrollView
let day1 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 0, toDate: NSDate(), options: [])
let day2 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -1, toDate: NSDate(), options: [])
let day3 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -2, toDate: NSDate(), options: [])
let day4 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -3, toDate: NSDate(), options: [])
let day5 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -4, toDate: NSDate(), options: [])
let day6 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -5, toDate: NSDate(), options: [])
let day7 = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -6, toDate: NSDate(), options: [])
let titles = [dF(day1!), dF(day2!), dF(day3!), dF(day4!), dF(day5!), dF(day6!), dF(day7!)]

我期望第 1 天将当前日期传递给函数 dF 并对其进行格式化。

所以我进行了一些检查以确保我得到了正确的日期当前时间:2016 年 2 月 1 日,我的时区凌晨 1:08

print(day1)
print(day2)
print(ddd)

这是控制台的结果:

可选(2016-01-31 17:08:47 +0000)

可选(2016-01-30 17:08:47 +0000)

2 月 32 日

我怀疑我的 NSDateComponent 设置不正确/与本地时区不一致。有什么想法吗?

最佳答案

  1. 您使用了错误的日期说明符。
  2. 您正在以最困难的方式创建日期字符串。

试试这个:

swift 3/4:

func dF(_ someDate: Date) -> String {
let format = DateFormatter()
format.dateFormat = "MMM d"
// For a more localized format, use the following instead:
// format.setLocalizedDateFormatFromTemplate("MMMd")

let conString = format.string(from: someDate)

return conString
}

老 swift 2的回答: func dF(someDate:NSDate) -> (String){ 让格式 = NSDateFormatter() format.dateFormat = "MMM d"

    let conString = format.stringFromDate(someDate)

return (conString)
}

关于ios - NSDate 在 Swift 中返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117024/

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