如何在Swift中获取另一个时区的当前日期和时间

我有一个计划的工作,需要在不同的时区不同的时间窗口运行。最终,知道 UTC 时间,当它(例如)20:00 在澳大利亚,为了启动这个地区的工作。

我有一个计划的工作,需要在不同的时区不同的时间窗口运行。最终,知道 UTC 时间,当它(例如)20:00 在澳大利亚,为了启动这个地区的工作。

UPDATE

关于我的用例的更多细节:我有一个需要每几个小时运行一次的计划作业。

这个工作需要在我的每个客户的办公时间之后运行,这是关于他们的时区。

我有每个客户的时区。但是,我需要找出每个时区的时间,以便能够为每个客户运行清理工作。

我无法找到一个关于如何在 Swift 中获取另一个时区的时间的例子?

4

有许多方法可以获取本地时间,例如使用字符串时区标识符和来自 T 的秒数。并且有许多格式来表示时间,例如字符串和本机Date对象。你没有在你的问题中指定太多,所以这里是一个起点:

func localTime(in timeZone: String) -> String {
    let f = ISO8601DateFormatter()
    f.formatOptions = [.withInternetDateTime]
    f.timeZone = TimeZone(identifier: timeZone)
    return f.string(from: Date())
}
print(localTime(in: "Asia/Tehran")) // 2019-11-20T20:17:13+03:30 (8:17 PM)

世界上有多少个时区并不完全确定,但一般的共识似乎是 38。我更喜欢使用secondsFromT,因为它比使用字符串标识符更具确定性,因为字符串标识符会发生变化(因为这是一个 Swift 库),而secondsFromT不能(不改变时区本身)。

// For a list of all time zone string identifiers
for timeZone in TimeZone.knownTimeZoneIdentifiers {
    print(timeZone)
}

不幸的是,secondsFromT无法识别小数时区,并且有相当多的时区;因此,我们可以使用这两种方法来获取 38 的完整列表:


-12:000
>


-00 / 00>i:10
i:10
i:10i
i:10
i:10
i
1






2
func getDateAndTime(timeZoneIdentifier: String) -> String? {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZ"
    dateFormatter.timeZone = TimeZone(identifier: timeZoneIdentifier)
    return dateFormatter.string(from: Date())
}
print(getDateAndTime(timeZoneIdentifier: "UTC")) //2019-11-20 23:37:28 091
0

您需要将 UTC 时间转换为本地时区。

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss SSS"
formatter.locale = Locale.current
formatter.timeZone = TimeZone.current
let date = dateFormatter.date(from: utcDate)

在这里更改 utcDate 与您要转换为本地的日期。

0

我想要一个简单格式的时间。即11:23pm在用户当前区域设置中。

我是这样做的:

func getTimeWithLocale(with timeZone: String) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .none
        dateFormatter.timeStyle = .short
        dateFormatter.timeZone = TimeZone(identifier: timeZone)
        dateFormatter.locale = .current
        
        let time = dateFormatter.string(from: Date()).lowercased().replacingOccurrences(of: " ", with: "")
        
        return time
    }

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(631)
生成名词的复数形式(plural of form)
上一篇
心跳 elasticsearch和kibana作为监控/警报解决方案作为Nagios的替代品有多好
下一篇

相关推荐

  • SWIFT:加快视频下载速度的技巧

    我有一个 iOS 应用程序,它从 Firebase (Cloud Firestore) 下载视频,其提要类似于 Instagram / TikTok。但是,在用户滚动到视频之前,我无法让视频随时可用。任何提示都会非常有帮助。TikTok 是如何做到的?他们会在加载时将一大堆视频保存到后台文件中吗?…

    2022-11-11 15:15:11
    0 83 87
  • SWIFT:加快视频下载速度的技巧

    我有一个 iOS 应用程序,它从 Firebase (Cloud Firestore) 下载视频,其提要类似于 Instagram / TikTok。但是,在用户滚动到视频之前,我无法让视频随时可用。任何提示都会非常有帮助。TikTok 是如何做到的?他们会在加载时将一大堆视频保存到后台文件中吗?…

    2022-11-21 11:14:14
    0 73 99
  • SWIFT:加快视频下载速度的技巧

    我有一个 iOS 应用程序,它从 Firebase (Cloud Firestore) 下载视频,其提要类似于 Instagram / TikTok。但是,在用户滚动到视频之前,我无法让视频随时可用。任何提示都会非常有帮助。TikTok 是如何做到的?他们会在加载时将一大堆视频保存到后台文件中吗?…

    2022-12-22 10:47:05
    0 89 71
  • ios视频翻译如何使用SwiftUI创建一个简单的应用程序教程学习如何使用SwiftUI快速构建简单的iOS应用程序

    iOS视频翻译是一种将视频内容从一种语言翻译成另一种语言的技术。它可以帮助用户在不同语言之间进行视频交流,为全球用户提供更好的体验。// Create a video translation request.…

    2023-02-12 10:36:52
    0 42 12
  • 面对面快传的文件恢复:如何从Swift进行面对面通话(facetime how to call)

    关于面对面快传的文件恢复的问题,在facetime how to call中经常遇到,我正在为iPad开发一个利用facetime的Swift应用程序。…

    2022-12-29 13:30:22
    0 85 90
  • I fly os:如何在SwiftUI中添加此按钮

    关于I fly os的问题,在i/os中经常遇到,我似乎无法让按钮出现在蓝色框的右下角。…

    2022-12-25 03:43:13
    0 62 57
  • 海马玩ios:如何在iOSSwift中玩Vimeo视频

    关于海马玩ios的问题,在save vimeo video to iphone中经常遇到,我创建了一个使用 Vimeo 播放视频的 iOS 应用程序。我想知道在 iOS Swift 中显示 Vimeo 视频的最佳方法是什么。…

    2022-11-28 04:09:43
    0 79 14
  • C30混凝土试块合格标准:将视频分成30秒的块Ios swift5

    关于C30混凝土试块合格标准的问题,在split video iphone中经常遇到,我一直试图让用户从视频库和分割视频 30 秒的块选择!…

    2022-12-09 12:23:31
    0 47 95

发表评论

登录 后才能评论

评论列表(39条)