我搜索了我的问题,但我没有找到任何相关的帮助......
故事:用户按名称,开始日期,结束日期和注释创建继续事件,因此保存Sqlite数据库上的所有字段.两种日期格式均为"yyyy-MM-dd".之后,当用户想要对事件执行操作时,应用程序会检查用户按开始日期和结束日期选择的日期,以及输入的日期是在开始日期之前还是在结束日期之后通知用户.
问题:作为用户,我创建了一个从2012年8月18日到2012年9月18日的活动.然后我把登录在18-8-2012,我收到了通知.我调试了应用程序.我很惊讶 格式为"yyyy-MM-dd"的字符串中的日期对象为"2012-08-17 19:30:00 +0000".代码是:
#define kPickerDate @"yyyy-MM-dd"
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:kPickerDate];
NSDate *sDate = [formatter dateFromString:start_date];
NSDate *eDate = [formatter dateFromString:exam_date];
Run Code Online (Sandbox Code Playgroud)
app怎么样??????????????
Ste*_*her 10
一个NSDate不只是一个日期,但也是一个时间.
您需要在每个阶段检查:
NSDateFormatter它.确保将时区设置为UTC.NSDateFormatter这个.确保将时区设置为UTC.只有当这三件作品都完美无缺时,你才能摆脱潜在的错误.
要设置日期格式化程序的时区,请使用:
formatter.timeZone = [NSTimeZone timeZoneWithAbbreviation: @"UTC"];
Run Code Online (Sandbox Code Playgroud)
不要试图通过采用当地时间解决这个问题.
当地时间的问题:
唯一安全的做法是在任何地方使用UTC.
(我实际上有点生活在UTC的可怜的人;他们不会被迫从他们的应用程序中甩掉这些错误!)
| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |