Swift 如何获取用户';斯威夫特当地时间是什么时候?
我正在制作一个应用程序,它可以决定日落和日出。尽管如此,我还是发现使用用户的本地时间获取它们有些困难。因此,我想知道:如何在Swift中获取用户的时区 我在iPhone模拟器中加载的测试位置(Puerto Vallarta,Mex)的坐标如下: 纬度:20.61 经度:-106.23 下一步是我的代码的一部分,用于确定世界上任何位置的日出和日落:Swift 如何获取用户';斯威夫特当地时间是什么时候?,swift,timezone,Swift,Timezone,我正在制作一个应用程序,它可以决定日落和日出。尽管如此,我还是发现使用用户的本地时间获取它们有些困难。因此,我想知道:如何在Swift中获取用户的时区 我在iPhone模拟器中加载的测试位置(Puerto Vallarta,Mex)的坐标如下: 纬度:20.61 经度:-106.23 下一步是我的代码的一部分,用于确定世界上任何位置的日出和日落: //First we get the sunrise time. let sunriseDate = Date(timeIntervalSince19
//First we get the sunrise time.
let sunriseDate = Date(timeIntervalSince1970: sunriseValue.doubleValue)
let formatter = DateFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .medium
formatter.timeZone = NSTimeZone(name: "UTC")! as TimeZone
formatter.dateFormat = "HH:mm:ss"
let sunrise = formatter.string(from: sunriseDate)
print(sunrise)
//Second, we get the sunset time
let sunsetDate = Date(timeIntervalSince1970: sunsetValue.doubleValue)
let sunset = formatter.string(from: sunsetDate)
print(sunset)
这是我从控制台得到的:
日出:13:08:12
日落时间:00:21:22
很明显,打印的日出和日落与UTC相对应,但是我还没有找到任何直接的信息来帮助我获取用户的本地时间,无论此人在哪里
基本上,你在上面的代码中看到的日出和日落,我是从一个API(openweather)中得到的,我从中得到了unix时间的值(我用这个转换为日期和时间)。现在我看到我有效地得到了正确的日落和日出,但是在UTC格式中,现在我缺少了从UTC到本地时间的一步
总之,我得到:
从unix时间中的API:time(例如sunrise=1541855294;sunset=1541895681;)中,使用DateFormatter()从中提取时间(请参见上面的代码),我得到了UTC时间(formatter.dateFormat=“HH:mm:ss”)
我希望通过这次修改,问题现在更加清楚了
这就是为什么我想问你是否可以帮我一把,请:)
提前谢谢,我为任何误解道歉 您是否尝试使用日期方法描述(使用locale:locale?)获取用户的本地化时间?这将为您提供设备的运行时间
let date = Date().description(with: .current)
print(date) //Saturday, November 10, 2018 at 11:30:58 AM Central Standard Time
日期的字符串表示形式,使用给定的区域设置,或者如果区域设置参数为nil,则使用国际格式YYYY-MM-DD HH:MM:SS±HHMM,其中±HHMM表示时区偏移量,以小时和分钟表示(例如,“2001-03-24 10:45:32+0600”)
之后,您可以给它任何您想要的格式…您是否尝试过不设置formatter.timeZone?然后,应使用用户设置中的时区。顺便说一句-如果确实使用时区,请使用
时区
,而不是时区
。是否要以用户的本地时间或坐标的本地时间显示时间?对于后者,您需要知道坐标的时区。我想保持简单,所以我只想显示用户的时间(仅显示时间HH:mm:ss)@M@JorgeAlbertoFuentesCasillas然后,只需删除设置格式化程序时区属性的行,然后就可以完成设置,就像Martin在第一条评论中所说的那样。这应该只用于调试,而不是显示给用户。OP只需要时间,而不是日期。正如我在评论末尾所写的那样…“你可以给出你想要的格式…”(HH:MM:SS)并使用该值与日出或日落值进行比较。你不能使用说明(with:)
方法设置格式,日期是字符串,不是日期
。请澄清如何使用日期方法的说明(带:)
给出OP所需的结果。