iOS:如何检查选择的日期时间在夏令时期间是否是有效时间?

问题描述 投票:0回答:1

我有一个特殊情况,要检查用户在哪里输入未来的日期和时间,我需要验证该时间是否有效(下面解释我的意思是有效的),考虑到用户可能会受到其所在时区的夏时制的影响。

例如:

  1. 假定用户的时区是澳大利亚的阿德莱德。打开link,查看时区如何影响阿德莱德,或参见下文。
4 Oct 2020 - Daylight Saving Time Starts
When local standard time is about to reach
Sunday, 4 October 2020, 2:00:00 am clocks are turned forward 1 hour to 
Sunday, 4 October 2020, 3:00:00 am local daylight time instead. 
  1. 现在基于上述信息,我的理解是,如果我的用户选择了之间的日期时间,>
  2. 2020年10月4日,2:01:00 am

-2020年10月4日,2:59:00 am

这是无效的,因为时间已转发至凌晨3点。

如何在iOS应用中进行验证? (假设我)

基本上,我需要通知用户所选时间受DST影响,并且用户需要选择其他时间。

我研究了日期和时区API,似乎找不到任何可以验证这一点的东西。

感谢您,将提供任何帮助。

我有一个特殊情况,检查用户在哪里输入未来的日期和时间,并且考虑到用户可能受到影响,因此我需要验证该时间是否有效(下面解释我的意思是有效的……)>] >

我想最简单的方法是将字符串(或用户输入的任何内容,似乎您没有使用UIDatePicker)转换为日期并检查是否可行。

对于中欧,DST将于2020年3月29日开始,所以

let df = DateFormatter() 
df.locale = Locale(identifier: "de_DE")
df.timeZone = TimeZone(identifier:"Europe/Berlin")
df.dateFormat="yyyy-MM-dd hh:mm"
if let theDate = df.date(from: "2020-03-29 02:01")
{
    print(theDate)
} else {
  print ("Illegal date")
}

将打印非法日期

。更加棘手的是切换回非DST,因为(在欧洲中部)2020-10-25 02:01有两个可能的日期-这可能意味着冬季或夏季时间具有两种不同的UTC表示形式。
ios swift date timezone dst
1个回答
0
投票

我想最简单的方法是将字符串(或用户输入的任何内容,似乎您没有使用UIDatePicker)转换为日期并检查是否可行。

© www.soinside.com 2019 - 2024. All rights reserved.