- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
friend 们,我正在根据下面的计算得到一个日期
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *expectedDate = [gregorian dateByAddingComponents:components toDate:startDate options:0];
NSTimeInterval timeZoneOffset = -[[NSTimeZone systemTimeZone] secondsFromGMTForDate:expectedDate];
NSDate *localDate = [expectedDate dateByAddingTimeInterval:(timeZoneOffset)];
NSString *date = [dateFormatter stringFromDate:localDate];
但是当夏令时生效时日期出错,并且当夏令时生效时timeZoneOffset也发生变化,但是无论夏令时是否生效我都想要相同的日期不..
请问 friend 们,我该如何处理,请帮忙。
问候兰 git
最佳答案
您不需要自己处理夏令时,“dateFormatter”会自动为您完成。通常你只需要一个 UTC (GMT+0) 时间的 NSDate 对象,“dateFormatter”也有一个时区,将在它自己的时区显示那个时间。
NSCalendar 和 NSDateFormatter 有时区设置。 NSDate 只是相对于 GMT+0 的一个时间点。
例子:“expectedDate”是 1 月 1 日凌晨 4 点(GMT+0)"dateFormatter"设置了时区 GMT+2(例如 Europe/Berlin),那么在将 "expectedDate"转换为字符串时,由于其自身的时区,将输出 "January 1st 6am"。
所以基本上您只需要确保“startDate”是正确的并且“gregorian”和“dateFormatter”使用正确的时区。默认情况下,他们使用系统时区,这似乎是您想要使用的时间。所以你只需要这些行(并且 startDate 必须是正确的):
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *expectedDate = [gregorian dateByAddingComponents:components toDate:startDate options:0];
NSString *date = [dateFormatter stringFromDate:expectedDate];
如果这不起作用,请发布更多有关如何生成 startDate 和 dateFormatter 的代码。
关于ios - 夏令时在 iOS 中生效时出现 Timezoneoffset 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819509/
我正在尝试将用户的本地时间存储到我的数据库中。我不能使用 PHP 函数 now(),因为它会返回服务器的时间。 我通过使用 JavaScript 获得了 TimezoneOffset: d = new
friend 们,我正在根据下面的计算得到一个日期 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalenda
什么是初始化 Swift 的干净方法 TimeZone来自 timeZoneOffset 字符串的对象,格式为:“+HH:MM”。 我正在寻找以下形式的内容: extension TimeZone {
我正在使用new Date()然后.getTime()将日期字符串传递为 1970 年以来的毫秒数。 问题是日期字符串不包含时区。他们是英国人,所以时区将是 GMT 或 GMT+1,具体取决于日期..
我有一个本地日期/时间戳,并且有一个以字符串格式存储的时区偏移量(下面的myStringTimeStamp变量名称)。我需要将本地日期/时间戳转换为 UTC 时间。 时间戳的格式为:yyyy-MM-d
我很难找到有关此关键问题的任何信息,因此我决定发布此信息以帮助遇到相同问题的用户。 Chrome 嵌入式 Flash Player (Pepper) 有一个关于日期 timezoneOffset 的错
我使用的是 Sql Sever 2008 R2。有没有办法从 timezoneoffSet 中识别时区标准名称或夏令时名称。 例如我有“2013-09-26 03:00:00.0000000 -04:
我是一名优秀的程序员,十分优秀!