UTC 日期到当前时区字符串和结果字符串日期到当前时区日期
UTC Date To Current TimeZone String and Result StringDate to Current TimeZone Date
我获取 UTC 格式的当前日期,并将其转换为本地时区,结果以字符串形式显示。
现在,我将该结果字符串日期转换为具有相同本地时区的日期,但它以 UTC 格式提供日期。
下面是我使用的代码:
print("current date :\( Date())") //current date : 2017-03-08 11:11:12 +0000
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
let localDate : String = dateFormatter.string(from: Date())
print("localDate date :\(localDate)") // localDate date: 08-03-2017 16:41:12 +0530
let dateFormatter1 = DateFormatter()
dateFormatter1.timeZone = TimeZone.current
dateFormatter1.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
let dateCurrent = dateFormatter1.date(from: localDate)!
print("dateCurrent date :\(dateCurrent)") // dateCurrent date: 2017-03-08 11:11:12 +0000
当前日期
我想在
08-03-2017 16:41:12 +0530
只有日期类型,没有字符串类型。
我哪里做错了?
这就是 Date
对象的工作方式。您只需保留日期对象,直到需要将其输出给用户或 API,此时您可以将其转换为适当时区的字符串。
一个 Date
对象本质上只是用一些处理它的辅助方法包装了一个 unix 时间戳。
试试这个,希望对你有帮助
let date: String = "dd-MM-yyyy HH:mm:ss Z"
var dateArr = date.components(separatedBy: " ")
let dateCurrent = (dateArr [0] )
print(dateCurrent)
您的 dateFormatter 有问题。这是我将 UTC 转换为本地和本地转换为 UTC 的代码:
convertUTCtoLocal(strUTCDate: "09-03-2017 03:54:00")
convertLocalToUTC(strUTCDate: "09-03-2017 09:24:00")
将 UTC 转换为本地
func convertUTCtoLocal(strUTCDate: String){
let dateFormater : DateFormatter = DateFormatter();
dateFormater.timeZone = TimeZone(abbreviation: "UTC")
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let dateFromString = dateFormater.date(from: strUTCDate)
dateFormater.timeZone = NSTimeZone.local as TimeZone!
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let localData = dateFormater.string(from: dateFromString!)
print("Your local date is \(localData)")
}
将本地转换为 UTC
func convertLocalToUTC(strUTCDate: String){
let dateFormater : DateFormatter = DateFormatter();
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
dateFormater.timeZone = NSTimeZone.local as TimeZone!
let dateFromString = dateFormater.date(from: strUTCDate)
dateFormater.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!;
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let localData = dateFormater.string(from: dateFromString!)
print("Your UTC date is \(localData)")
}
感谢大家的回答,
我挖了出来,找到了解决办法。我在这里分享代码。
let currentDate = Date()
let CurrentTimeZone: TimeZone = TimeZone(abbreviation: "UTC")!
let SystemTimeZone: TimeZone = TimeZone.current
let currentGMTOffset: Int = CurrentTimeZone.secondsFromGMT(for: currentDate)
let SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate)
let interval: TimeInterval = Double(SystemGMTOffset) - Double(currentGMTOffset)
let todayDate: Date = Date(timeInterval: interval, since: currentDate)
print(" Today Date : \(todayDate)")
我获取 UTC 格式的当前日期,并将其转换为本地时区,结果以字符串形式显示。
现在,我将该结果字符串日期转换为具有相同本地时区的日期,但它以 UTC 格式提供日期。
下面是我使用的代码:
print("current date :\( Date())") //current date : 2017-03-08 11:11:12 +0000
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
let localDate : String = dateFormatter.string(from: Date())
print("localDate date :\(localDate)") // localDate date: 08-03-2017 16:41:12 +0530
let dateFormatter1 = DateFormatter()
dateFormatter1.timeZone = TimeZone.current
dateFormatter1.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
let dateCurrent = dateFormatter1.date(from: localDate)!
print("dateCurrent date :\(dateCurrent)") // dateCurrent date: 2017-03-08 11:11:12 +0000
当前日期
我想在
08-03-2017 16:41:12 +0530
只有日期类型,没有字符串类型。
我哪里做错了?
这就是 Date
对象的工作方式。您只需保留日期对象,直到需要将其输出给用户或 API,此时您可以将其转换为适当时区的字符串。
一个 Date
对象本质上只是用一些处理它的辅助方法包装了一个 unix 时间戳。
试试这个,希望对你有帮助
let date: String = "dd-MM-yyyy HH:mm:ss Z"
var dateArr = date.components(separatedBy: " ")
let dateCurrent = (dateArr [0] )
print(dateCurrent)
您的 dateFormatter 有问题。这是我将 UTC 转换为本地和本地转换为 UTC 的代码:
convertUTCtoLocal(strUTCDate: "09-03-2017 03:54:00")
convertLocalToUTC(strUTCDate: "09-03-2017 09:24:00")
将 UTC 转换为本地
func convertUTCtoLocal(strUTCDate: String){
let dateFormater : DateFormatter = DateFormatter();
dateFormater.timeZone = TimeZone(abbreviation: "UTC")
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let dateFromString = dateFormater.date(from: strUTCDate)
dateFormater.timeZone = NSTimeZone.local as TimeZone!
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let localData = dateFormater.string(from: dateFromString!)
print("Your local date is \(localData)")
}
将本地转换为 UTC
func convertLocalToUTC(strUTCDate: String){
let dateFormater : DateFormatter = DateFormatter();
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
dateFormater.timeZone = NSTimeZone.local as TimeZone!
let dateFromString = dateFormater.date(from: strUTCDate)
dateFormater.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!;
dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
let localData = dateFormater.string(from: dateFromString!)
print("Your UTC date is \(localData)")
}
感谢大家的回答,
我挖了出来,找到了解决办法。我在这里分享代码。
let currentDate = Date()
let CurrentTimeZone: TimeZone = TimeZone(abbreviation: "UTC")!
let SystemTimeZone: TimeZone = TimeZone.current
let currentGMTOffset: Int = CurrentTimeZone.secondsFromGMT(for: currentDate)
let SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate)
let interval: TimeInterval = Double(SystemGMTOffset) - Double(currentGMTOffset)
let todayDate: Date = Date(timeInterval: interval, since: currentDate)
print(" Today Date : \(todayDate)")