将两个字符串转换为NSDate

时间:2016-08-11 22:57:18

标签: ios swift

我想计算两个日期之间的时间。其中一个日期是今天,另一个日期是某个未来。

问题是将来的日期分为两个字符串,第一个包含日期,另一个包含该日期的时间。当我将两个字符串放在一起并尝试将其转换为NSDate时,我得到 Nil

我认为我的日期变量有问题。

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

    }

2 个答案:

答案 0 :(得分:2)

两件事:

  1. 您的格式错误。它应该是<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/.*\/ RewriteCond %{REQUEST_URI} !big RewriteCond %{REQUEST_URI} !red RewriteCond %{REQUEST_URI} !dark RewriteCond %{REQUEST_URI} !\& RewriteRule ^(.*)$ - [L,R=404] </IfModule> h:mm a是两位数的24小时制。你有1或2位数,12小时小时。 HH是2个月的月份。使用MM两位数分钟。
  2. 如果您的日期和时间字符串始终为英文,则需要将格式化程序的区域设置设置为英语区域设置。如果您不这样做,您的代码将始终使用非英语语言在任何设备上返回mm日期。

答案 1 :(得分:2)

您的首要问题是,您使用的是HH,而不是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。试试这个:

导入基金会

String?

附注:

  • 为什么名为date的变量,如果它是AMSymbol
  • 为什么PMSymbol是可选的?你为它分配了一个字面值。
  • 您不必设置newobcast=$(ifconfig | awk '/broadcast/{print $6}') newo=$(arp -a | awk '!match($2,"("b")")' b=$bcast) 。那些只与打印日期有关,而不是解析它们。