ios - 为什么我的日期对象的结果总是比我要转换的实际字符串晚几个小时?

标签 ios swift date datetime

<分区>

我是一名初级 iOS 开发人员。现在我在将字符串转换为日期对象时遇到问题。

我不知道为什么结果(日期对象)总是比我输入的实际字符串晚 7 小时。目前我在印度尼西亚(GMT + 7),我不知道,但也许这与我居住的地方有关。这是我使用的代码

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.timeZone = Calendar.current.timeZone
    let x = dateFormatter.date(from: "2018-07-18 12:00:00")
    print(x)


result: 2018-07-18 05:00:00 +0000

如何解决这个问题?真的需要你的帮助

最佳答案

您的代码运行良好。没有什么问题。打印的值 100% 正确。

Date 对象存储有关时区的任何信息,打印时,它始终处于 GMT (UTC+0) 时区。这就是 +0000 出现在打印字符串末尾的原因。 Date 对象表示时间点。印度尼西亚的 12:00 与 GMT 的 05:00 是同一时间点

因此,每当您希望将Date 对象视为 时区的字符串时,您需要像以前那样使用DateTimeFormatter在这里并设置格式化程序的 timeZone

关于ios - 为什么我的日期对象的结果总是比我要转换的实际字符串晚几个小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397856/

相关文章:

iphone - iOS:UIView 相对于 UIWindow 的起源

ios - 动画期间 subview 堆叠

android - 来自 EditText 的日期

ios - 多线程核心数据 : 'Main' context thread

ios - 如何在 AFNETWORKING 中为参数设置多个值

ios - Facebook iOS SDK : Login with Facebook failed

swift - 什么是 UIAlertController 处理程序以及如何使用它?

swift - 使用子类时如何更新解析记录

r - 如何将两个数据帧与日期进行比较,返回匹配日期并为新数据帧中的每一行标记不匹配日期

javascript - 有一个噩梦试图比较 React 应用程序中的两个日期是否匹配