DateFormatter 在 ios 中不工作 通过设置
DateFormatter not working in ios By setting
我在 xcode 6.2 中使用日期格式化程序,swift.It 在 ios 8.1 中工作正常,但是当我在 ios 8.1 以上测试我的应用程序时(我在 8.2 和 8.4 中试过)日期格式化程序不工作。有没有人面临类似的问题。这是我得到的日期类型,字符串格式 10-08-2015T13:59:53+0000。我需要使用格式 "dd-MM-yyyy'T'HH:mm:ssZZZ" 的日期格式器将其转换为日期,这是我将字符串转换为日期的方法:-
func dateFromString(dateString:String)->NSDate
{
print(dateString)
var dateFormatter = NSDateFormatter()
//yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
var date = dateFormatter.dateFromString(dateString)
print(date)
return date!
}
抱歉,我正在编辑问题。我发现了它发生的原因。在 iphone 的设置页面中,如果 24_hour_time 开启,则在日期和时间中 它正在工作 fine.If,它关闭 那么只有日期格式化程序给出 nil date.I 插入格林威治标准时间that.It 在 8.1.3 中工作正常,但在 8.4
中出现问题
dateFormatter.timeZone = NSTimeZone(name: "GMT")
谢谢
快乐编码
警告
- 格式化程序的函数名称与您的相同
自定义函数。不是说这是你的问题,而是说
可能不是故意的。
- 在某些情况下您使用 var 而不是 let,同样不会导致错误
否则,您的代码 returns 正确的日期...但采用日期格式,而不是字符串。
要以您想要的格式打印它,只需将日期转换回所需的字符串格式:
func dateFromString(dateString:String)->NSDate
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
let date = dateFormatter.dateFromString(dateString)
return date!
}
let formatter = NSDateFormatter()
formatter.dateFormat = "dd/M/yyyy, H:mm"
print(formatter.stringFromDate(dateFromString("10-08-2015T13:59:53+0000")))
运行 here 测试最新的 Swift... 没有问题
我找到了这个问题的答案。抱歉延迟 post 回答。您需要像我在此示例中所做的那样向格式化程序输入 NSLocale。
func dateFromstring(dateString:String)->NSDate {
//print(date)
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
//DateFormatter To change By chakshu
var enUSPOSIXLocale:NSLocale=NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.locale=enUSPOSIXLocale
dateFormatter.timeZone = NSTimeZone(name: "GMT")
//dateFormatter.timeZone = NSTimeZone.localTimeZone()
var date = dateFormatter.dateFromString(dateString)
//print(date)
return date!
}
希望对您有所帮助。
谢谢
我在 xcode 6.2 中使用日期格式化程序,swift.It 在 ios 8.1 中工作正常,但是当我在 ios 8.1 以上测试我的应用程序时(我在 8.2 和 8.4 中试过)日期格式化程序不工作。有没有人面临类似的问题。这是我得到的日期类型,字符串格式 10-08-2015T13:59:53+0000。我需要使用格式 "dd-MM-yyyy'T'HH:mm:ssZZZ" 的日期格式器将其转换为日期,这是我将字符串转换为日期的方法:-
func dateFromString(dateString:String)->NSDate
{
print(dateString)
var dateFormatter = NSDateFormatter()
//yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
var date = dateFormatter.dateFromString(dateString)
print(date)
return date!
}
抱歉,我正在编辑问题。我发现了它发生的原因。在 iphone 的设置页面中,如果 24_hour_time 开启,则在日期和时间中 它正在工作 fine.If,它关闭 那么只有日期格式化程序给出 nil date.I 插入格林威治标准时间that.It 在 8.1.3 中工作正常,但在 8.4
中出现问题 dateFormatter.timeZone = NSTimeZone(name: "GMT")
谢谢 快乐编码
警告
- 格式化程序的函数名称与您的相同 自定义函数。不是说这是你的问题,而是说 可能不是故意的。
- 在某些情况下您使用 var 而不是 let,同样不会导致错误
否则,您的代码 returns 正确的日期...但采用日期格式,而不是字符串。
要以您想要的格式打印它,只需将日期转换回所需的字符串格式:
func dateFromString(dateString:String)->NSDate
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
let date = dateFormatter.dateFromString(dateString)
return date!
}
let formatter = NSDateFormatter()
formatter.dateFormat = "dd/M/yyyy, H:mm"
print(formatter.stringFromDate(dateFromString("10-08-2015T13:59:53+0000")))
运行 here 测试最新的 Swift... 没有问题
我找到了这个问题的答案。抱歉延迟 post 回答。您需要像我在此示例中所做的那样向格式化程序输入 NSLocale。
func dateFromstring(dateString:String)->NSDate {
//print(date)
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
//DateFormatter To change By chakshu
var enUSPOSIXLocale:NSLocale=NSLocale(localeIdentifier: "en_US_POSIX")
dateFormatter.locale=enUSPOSIXLocale
dateFormatter.timeZone = NSTimeZone(name: "GMT")
//dateFormatter.timeZone = NSTimeZone.localTimeZone()
var date = dateFormatter.dateFromString(dateString)
//print(date)
return date!
}
希望对您有所帮助。 谢谢