Ios 将两个字符串转换为NSDate
我正在计算两次约会之间的时间。其中一个日期是今天,另一个日期是将来的某个地方 问题是将来的日期被分成两个字符串,第一个包含日期,另一个包含该日期的时间。当我将这两个字符串组合成一个字符串并尝试将其转换为NSDate时,得到的结果是零 我假设我的日期变量有问题Ios 将两个字符串转换为NSDate,ios,swift,Ios,Swift,我正在计算两次约会之间的时间。其中一个日期是今天,另一个日期是将来的某个地方 问题是将来的日期被分成两个字符串,第一个包含日期,另一个包含该日期的时间。当我将这两个字符串组合成一个字符串并尝试将其转换为NSDate时,得到的结果是零 我假设我的日期变量有问题 let eventDate: String? = "21 Aug Sun 2016" let eventTime: String? = "9:00 PM" let date : String? = "\(eventDate!) \(ev
let eventDate: String? = "21 Aug Sun 2016"
let eventTime: String? = "9:00 PM"
let date : String? = "\(eventDate!) \(eventTime!)"
print(date!) // "21 Aug Sun 2016 9:00 PM"
let formatter = NSDateFormatter()
formatter.dateFormat = "dd MMM eee yyyy HH:MM a"
formatter.AMSymbol = "AM"
formatter.PMSymbol = "PM"
if let dateTimeForEvent = formatter.dateFromString(date!) {
print(dateTimeForEvent)
}else {
print("Error")// prints error
}
两件事:
你现在的格式不对。应该是h:mm a。HH表示两位数的24小时制。你有一个1或2位数,12小时。MM表示两位数的月份。使用mm表示两位数的分钟。
如果日期和时间字符串始终为英语,则需要将格式化程序的区域设置为英语区域设置。如果您不这样做,您的代码将始终在任何使用英语以外语言的设备上返回零日期。
两件事:
你现在的格式不对。应该是h:mm a。HH表示两位数的24小时制。你有一个1或2位数,12小时。MM表示两位数的月份。使用mm表示两位数的分钟。
如果日期和时间字符串始终为英语,则需要将格式化程序的区域设置为英语区域设置。如果您不这样做,您的代码将始终在任何使用英语以外语言的设备上返回零日期。
您的主要问题是您使用的是HH,它是24小时制,而不是HH,MM是月制,而不是MM。试试这个: 进口基金会
let eventDate = "21 Aug Sun 2016"
let eventTime = "9:00 PM"
let eventDateTime = "\(eventDate) \(eventTime)"
print(eventDateTime) // "21 Aug Sun 2016 9:00 PM"
let formatter = NSDateFormatter()
formatter.dateFormat = "dd MMM eee yyyy hh:mm a"
if let date = formatter.dateFromString(eventDateTime) {
print(date) // 2016-08-21 21:00:00 +0000
}
else {
print("Error")// prints error, no shit? why is this comment here?
}
旁注:
如果变量是字符串,为什么称为date??
无论如何,为什么约会是可选的?您为它指定了一个文字值。
您不必设置AMSymbol和PMSymbol。这些只适用于打印日期,而不是解析日期。
您的主要问题是您使用的是HH,它是24小时制,而不是HH,MM是月制,而不是MM。试试这个: 进口基金会
let eventDate = "21 Aug Sun 2016"
let eventTime = "9:00 PM"
let eventDateTime = "\(eventDate) \(eventTime)"
print(eventDateTime) // "21 Aug Sun 2016 9:00 PM"
let formatter = NSDateFormatter()
formatter.dateFormat = "dd MMM eee yyyy hh:mm a"
if let date = formatter.dateFromString(eventDateTime) {
print(date) // 2016-08-21 21:00:00 +0000
}
else {
print("Error")// prints error, no shit? why is this comment here?
}
旁注:
如果变量是字符串,为什么称为date??
无论如何,为什么约会是可选的?您为它指定了一个文字值。
您不必设置AMSymbol和PMSymbol。这些只适用于打印日期,而不是解析日期。