MST缩写为错误的时区转换
在我的代码中,我会从服务器中获得时间及其格式时区,例如“ IST”,“ MST”,并且通过使用该时间区域,我需要将给定时间转换为本地设备的时间。为此,我使用的是TimeZone(缩写::)方法及其与“ MST”格式以外的所有格式的正常工作。一小时后,我会得到转换的时间。
在以下代码中,我将输出为04:30 pm和04:29 pm,这是实际时间后一小时。 (在这里给定时间的格式是“ MST”)
let startDateString = "04:00:00" // expected 3:30pm after convertine to IST
let endDateString = "03:59:59"
let timeZoneString = "MST"
func getTime() {
if let scheduleTimeZone = TimeZone(abbreviation: timeZoneString) {
let startScheduledTime = toScheduledTime(startDateString, using: scheduleTimeZone)
let endScheduledTime = toScheduledTime(endDateString, using: scheduleTimeZone)
print(startScheduledTime)
print(endScheduledTime)
}
}
/// Method to get local time for scheduled time
func toScheduledTime(_ time: String, using timeZone: TimeZone) -> String {
let today = "2022-05-09"
guard let dateTimeScheduleTZ = (today + " " + time).dateTime(createWithTZ: timeZone,
format: "yyyy-MM-dd HH:mm:ss") else {
return ""
}
return dateTimeScheduleTZ.dateTime(createLocal: "hh:mma")
}
extension String {
func dateTime(createWithTZ timeZone: TimeZone,
format: String) -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = timeZone
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
guard let date = dateFormatter.date(from: self) else {
return nil
}
return date
}
}
extension Date {
func dateTime(createLocal format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
return dateFormatter.string(from: self)
}
}
getTime()
In my code I am getting time and its format time zone like "IST", "MST" from a server and by using that I need to convert a given time to local device's time. For that I am using TimeZone(abbreviation:) method and its working fine with all formats except "MST" format. I am getting converted time one hour after.
In following code I am getting output as 04:30PM and 04:29PM which is one hour after the actual time. (here given time's format is "MST")
let startDateString = "04:00:00" // expected 3:30pm after convertine to IST
let endDateString = "03:59:59"
let timeZoneString = "MST"
func getTime() {
if let scheduleTimeZone = TimeZone(abbreviation: timeZoneString) {
let startScheduledTime = toScheduledTime(startDateString, using: scheduleTimeZone)
let endScheduledTime = toScheduledTime(endDateString, using: scheduleTimeZone)
print(startScheduledTime)
print(endScheduledTime)
}
}
/// Method to get local time for scheduled time
func toScheduledTime(_ time: String, using timeZone: TimeZone) -> String {
let today = "2022-05-09"
guard let dateTimeScheduleTZ = (today + " " + time).dateTime(createWithTZ: timeZone,
format: "yyyy-MM-dd HH:mm:ss") else {
return ""
}
return dateTimeScheduleTZ.dateTime(createLocal: "hh:mma")
}
extension String {
func dateTime(createWithTZ timeZone: TimeZone,
format: String) -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = timeZone
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
guard let date = dateFormatter.date(from: self) else {
return nil
}
return date
}
}
extension Date {
func dateTime(createLocal format: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
return dateFormatter.string(from: self)
}
}
getTime()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论