ios - 将 UTC 日期格式转换为本地 nsdate

标签 ios swift date timezone nsdate

我从服务器获取 UTC 时区的字符串日期,我需要将其转换为本地时区。

我的代码:

let utcTime = "2015-04-01T11:42:00.269Z"    
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let date = dateFormatter.dateFromString(utcTime)
println("utc: \(utcTime), date: \(date)")

这打印 -

utc: 2015-04-01T11:42:00.269Z, 日期: 可选(2015-04-01 11:42:00 +0000)

如果我删除

dateFormatter.timeZone = NSTimeZone(name: "UTC") 

它打印

utc: 2015-04-01T11:42:00.269Z, 日期: 可选(2015-04-01 08:42:00 +0000)

我的本​​地时区是 UTC +3 在第一个选项中我得到了 UTC 在第二个选项中,我得到 UTC -3

我应该得到

utc: 2015-04-01T11:42:00.269Z, 日期: 可选(2015-04-01 14:42:00 +0000)

那么如何将 UTC 日期格式转换为本地时间呢?

最佳答案

以下内容在 Objective-C 中对我有用:

// create dateFormatter with UTC time format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *date = [dateFormatter dateFromString:@"2015-04-01T11:42:00"]; // create date from string

// change to a readable time format and change to local time zone
[dateFormatter setDateFormat:@"EEE, MMM d, yyyy - h:mm a"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *timestamp = [dateFormatter stringFromDate:date];

我把这两个网站放在手边,用于转换不同的时间格式: http://www.w3.org/TR/NOTE-datetime

http://benscheirman.com/2010/06/dealing-with-dates-time-zones-in-objective-c/

在 Swift 中它将是:

// create dateFormatter with UTC time format
  let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
        dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone?
        let date = dateFormatter.date(from: "2015-04-01T11:42:00")// create   date from string

        // change to a readable time format and change to local time zone
        dateFormatter.dateFormat = "EEE, MMM d, yyyy - h:mm a"
        dateFormatter.timeZone = NSTimeZone.local
        let timeStamp = dateFormatter.string(from: date!)

关于ios - 将 UTC 日期格式转换为本地 nsdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29392874/

相关文章:

android - VertScrollBox 底部到达android和IOS时检测

java - 在 Android 和 Java 上复制 Swift 完成处理程序

ios - Xcode 将图像保存为特定形状

ios - 如何在 XCode 中运行 Watch App

Swift 泛型继承

java - Java中日期的加减法

swift - 游戏结束后如何删除此功能?

swift - 碰撞在 swift + sprite 套件中不起作用

java - 在 Java 中生成两个日期之间的日开始时间和日结束时间。夏令时问题

mysql - 从忽略周末的日期中减去天数