Swift MMM dd,yyyy hh:mm:ss a的正确日期格式是什么?以及如何转换为dd-mm-yyy-HH:ii
我想将此:2017年12月31日8:00:00 PM转换为Swift 4中的dd-mm-yyyy HH:ii格式 这是我目前的代码:Swift MMM dd,yyyy hh:mm:ss a的正确日期格式是什么?以及如何转换为dd-mm-yyy-HH:ii,swift,date,nsdateformatter,dateformatter,Swift,Date,Nsdateformatter,Dateformatter,我想将此:2017年12月31日8:00:00 PM转换为Swift 4中的dd-mm-yyyy HH:ii格式 这是我目前的代码: let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMM dd, yyyy hh:mm:ss a"//this your string date format if let translatedDate = dateFormatter.date(from: dateti
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy hh:mm:ss a"//this your string date format
if let translatedDate = dateFormatter.date(from: datetime) {
dateFormatter.dateFormat = "dd-MM-yyyy HH:ii"
return dateFormatter.string(from: translatedDate)
}
该代码从不输入if语句。我想我的日期格式不正确。一种在日期及其文本表示之间转换的格式
您可以找到更多Locale
标识符
- 首先,将日期转换为本地时区。使用
类区域设置
- 之后,您可以将日期转换为特定格式
let dateStr = "Wed, 26 Jul 2017 18:10:02 +0530"
if let date = Date(fromString: dateStr, format: "MMM dd, yyyy hh:mm:ss a") {
debugPrint(date.toString(format: "dd-MM-yyyy HH:ii"))
}
日期扩展是…
extension Date {
// Initializes Date from string and format
public init?(fromString string: String, format: String, identifier: String = Locale.current.identifier) {
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.locale = Locale(identifier: identifier)
if let date = formatter.date(from: string) {
self = date
} else {
return nil
}
}
// Converts Date to String, with format
public func toString(format: String, identifier: String = Locale.current.identifier) -> String {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: identifier)
formatter.dateFormat = format
return formatter.string(from: self)
}
}
extension String {
// Converts String to formated date string, with inputFormat and outputFormat
public func toDate(form inputFormat: String, to outputFormat: String, identifier: String = Locale.current.identifier) -> String? {
return Date(fromString: self, format: inputFormat, identifier: identifier)?.toString(format: outputFormat, identifier: identifier)
}
// Converts String to Date, with format
func toDate(format: String, identifier: String = Locale.current.identifier) -> Date? {
return Date(fromString: self, format: format, identifier: identifier)
}
}
字符串扩展名是…
extension Date {
// Initializes Date from string and format
public init?(fromString string: String, format: String, identifier: String = Locale.current.identifier) {
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.locale = Locale(identifier: identifier)
if let date = formatter.date(from: string) {
self = date
} else {
return nil
}
}
// Converts Date to String, with format
public func toString(format: String, identifier: String = Locale.current.identifier) -> String {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: identifier)
formatter.dateFormat = format
return formatter.string(from: self)
}
}
extension String {
// Converts String to formated date string, with inputFormat and outputFormat
public func toDate(form inputFormat: String, to outputFormat: String, identifier: String = Locale.current.identifier) -> String? {
return Date(fromString: self, format: inputFormat, identifier: identifier)?.toString(format: outputFormat, identifier: identifier)
}
// Converts String to Date, with format
func toDate(format: String, identifier: String = Locale.current.identifier) -> Date? {
return Date(fromString: self, format: format, identifier: identifier)
}
}
在日期及其文本表示形式之间进行转换的语言
您可以找到更多Locale
标识符
- 首先,将日期转换为本地时区。使用
类区域设置
- 之后,您可以将日期转换为特定格式
let dateStr = "Wed, 26 Jul 2017 18:10:02 +0530"
if let date = Date(fromString: dateStr, format: "MMM dd, yyyy hh:mm:ss a") {
debugPrint(date.toString(format: "dd-MM-yyyy HH:ii"))
}
日期扩展是…
extension Date {
// Initializes Date from string and format
public init?(fromString string: String, format: String, identifier: String = Locale.current.identifier) {
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.locale = Locale(identifier: identifier)
if let date = formatter.date(from: string) {
self = date
} else {
return nil
}
}
// Converts Date to String, with format
public func toString(format: String, identifier: String = Locale.current.identifier) -> String {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: identifier)
formatter.dateFormat = format
return formatter.string(from: self)
}
}
extension String {
// Converts String to formated date string, with inputFormat and outputFormat
public func toDate(form inputFormat: String, to outputFormat: String, identifier: String = Locale.current.identifier) -> String? {
return Date(fromString: self, format: inputFormat, identifier: identifier)?.toString(format: outputFormat, identifier: identifier)
}
// Converts String to Date, with format
func toDate(format: String, identifier: String = Locale.current.identifier) -> Date? {
return Date(fromString: self, format: format, identifier: identifier)
}
}
字符串扩展名是…
extension Date {
// Initializes Date from string and format
public init?(fromString string: String, format: String, identifier: String = Locale.current.identifier) {
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.locale = Locale(identifier: identifier)
if let date = formatter.date(from: string) {
self = date
} else {
return nil
}
}
// Converts Date to String, with format
public func toString(format: String, identifier: String = Locale.current.identifier) -> String {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: identifier)
formatter.dateFormat = format
return formatter.string(from: self)
}
}
extension String {
// Converts String to formated date string, with inputFormat and outputFormat
public func toDate(form inputFormat: String, to outputFormat: String, identifier: String = Locale.current.identifier) -> String? {
return Date(fromString: self, format: inputFormat, identifier: identifier)?.toString(format: outputFormat, identifier: identifier)
}
// Converts String to Date, with format
func toDate(format: String, identifier: String = Locale.current.identifier) -> Date? {
return Date(fromString: self, format: format, identifier: identifier)
}
}
看来
translateDate
是零,我在操场上试过了,没问题。那么,当地的问题是什么?否则,我不知道格式()中的ii
,我不知道您想用它做什么,所以如果您通过if let
测试,我认为dateFormatter.string(from:translatedDate)
将不是您想要的。可能是另一个“setdateFormatter.locale=locale(标识符:“en_US_POSIX”)
”问题,比较或–但是ii
代表什么?8
将不匹配hh
,因为hh
需要两位数字(所以08
)。请尝试使用单个h
。您的代码很好:let datetime=“2017年12月31日8:00:00 PM”let dateFormatter=dateFormatter()dateFormatter.dateFormat=“MMM dd,yyyyy hh:mm:ss a”dateFormatter.locale=locale(标识符:“en_US_POSIX”),如果let translatedDate=dateFormatter.date(from:datetime){dateFormatter.dateFormat=“dd-MM-yyyy HH:MM”让结果=dateFormatter.string(from:translatedDate)打印(结果)//31-12-2017 20:00}
无论如何,我认为ii
是一个mistake@Cyrille:不,h
匹配从1到12的任何时间。似乎translatedDate
为零,我在操场上尝试过,没有问题。因此,本地问题?否则,我没有格式(),我不知道你想用它做什么,所以如果你通过了if let
测试,我不认为dateFormatter.string(from:translatedDate)
将是你想要的。可能另一个“setdateFormatter.locale=locale(标识符:“en_US\u POSIX”)
“发布、比较或–但是ii
代表什么?8
将不匹配hh
,因为hh
需要两位数字(所以08
)。请尝试使用单个h
。您的代码很好:let datetime=“2017年12月31日8:00:00 PM”let dateFormatter=dateFormatter()dateFormatter.dateFormat=“MMM dd,yyyyy hh:mm:ss a”dateFormatter.locale=locale(标识符:“en_US_POSIX”),如果let translatedDate=dateFormatter.date(from:datetime){dateFormatter.dateFormat=“dd-MM-yyyy HH:MM”让结果=dateFormatter.string(from:translatedDate)打印(结果)//31-12-2017 20:00}
无论如何,我认为ii
是一个mistake@Cyrille:否,h
匹配1到12之间的任何小时。对于接受日期格式作为输入参数的函数,强制展开日期格式设置程序的输出是一个坏主意。如果其中一种格式错误,请使函数可丢弃或返回nil
。此外,如果硬编码区域设置,将其设置为en_US\u POSIX
,而不是en_US
。在接受日期格式作为输入参数的函数中,强制展开日期格式设置器的输出是一个坏主意。如果任何一种格式错误,请将函数设置为可丢弃或返回nil
。此外,如果要硬编码区域设置,请进行设置到en_US\u POSIX
,而不是en_US
。