首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIDatePicker时间

UIDatePicker时间
EN

Stack Overflow用户
提问于 2015-09-09 12:44:00
回答 2查看 1K关注 0票数 1

我有一个UIDatePicker和一个按钮。当我按下按钮时,我想在日志中显示消息“设置x的提醒”,其中x是日期选择器显示的时间。

每次我按下按钮时,记录的时间正好落后于选择器显示的时间(选择器显示的时间是我当前的时间)。我怀疑这和时区有关。我住在格林尼治时间+2时区(我想是+3,因为我们是夏令时)。

您知道我如何使记录的时间与显示的时间相同吗?

下面是当我按下按钮时执行的方法。谢谢。

代码语言:javascript
运行
复制
- (IBAction)addReminder:(id)sender {
    [self.datePicker setTimeZone:[NSTimeZone systemTimeZone]];
    NSLog(@"Setting a reminder for %@", self.datePicker.date);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-09 13:04:26

NSDate是某个时刻的简单表示,它不了解您的本地时间。当您记录它(实际上,当description)消息被发送时,它使用GMT来显示自己。

UIDatePicker默认使用您的时区(请参阅ref/occ/instp/UIDatePicker/timeZone)。

所以,下面是它的工作原理:

  • 您可以在DatePicker中选择一些时间,但是除非指定时区,否则时间是没有意义的。
  • DatePicker使用本地(GMT+2)时区并为其创建NSDate
  • 您可以显示NSDate,因为它对时区一无所知,所以它只是将自己显示为格林尼治标准时间。

要显示您的日期,您应该使用NSDateFormatter。它具有Timezone属性:ref/occ/instp/NSDateFormatter/timeZone

您还可以使用NSCalendar及其组件。

您应该阅读本指南:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html因为日期、格式和日历在Cocoa中并不十分清楚,除非您理解它的概念。

票数 0
EN

Stack Overflow用户

发布于 2017-06-16 10:33:35

试试这个..。

代码语言:javascript
运行
复制
NSDate *now = [[NSDate alloc] init];
[self.datePicker setDate:now];
[self.picker setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:2*60*60]]; // GMT+2 Your timeZone
NSLog(@"Setting a reminder for %@", self.datePicker.date);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32479892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档