如何在UIDatePicker中指定时区

时间:2011-06-18 11:23:59

标签: iphone objective-c cocoa-touch datepicker

- (IBAction) buttonPressed {
NSDate *selected = [datePicker date];
NSString *message = [[NSString alloc] initWithFormat:@"The date and time you selected is: %@", selected];
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Date and Time Selected" message:message delegate:nil cancelButtonTitle:@"Yes, I did!" otherButtonTitles:nil];
[alert show];
[alert release];
[message release];

所以我的问题是下一个......如何在Objective C中使用Datepicker指定时区? 现在,如果我从DatePicker中选择一些值并按下显示警报的按钮 - 时间错误。这可能是因为时区不正确,但我不确定。那么任何想法都会很棒。在下面的图片中你可以看到我选择了下午2:14(14:14),但是一个更改说它是11:14并且时区是+000

更新1 我在代码中添加了一些更改,但仍然没有...

- (IBAction) buttonPressed {
NSDate *selected = [datePicker date];       
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
NSTimeZone *tz = [NSTimeZone systemTimeZone];
[dateFormatter setTimeZone:tz];
NSString *formattedDate = [dateFormatter stringFromDate:selected];
NSString *message = [[NSString alloc] initWithFormat:@"The date and time you selected is: %@", formattedDate];
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"Date and Time Selected" 
                      message:message delegate:nil cancelButtonTitle:@"Yes, I did!" otherButtonTitles:nil];
[alert show];
[alert release];
[message release];
[dateFormatter release];

5 个答案:

答案 0 :(得分:15)

在用户定义你的datepicker

时使用它

datePicker.timeZone = [NSTimeZone localTimeZone];

答案 1 :(得分:4)

您可以使用时区设置日期

目标C

datePicker.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:10*60*60]; // Like GMT+10
Swift 3中的

datePicker.timeZone = TimeZone(secondsFromGMT: 5*60*60)  // Like GMT+5

答案 2 :(得分:2)

您可以使用Australia/West (+08:00) , WST, Asia/Kolkata (+05:30),IST

等时区字符串设置日期
datePicker.timeZone = [NSTimeZone timeZoneWithName:@"timezone string goes here"] ;

答案 3 :(得分:2)

在Swift 3中:

datePicker.timeZone = NSTimeZone.local

答案 4 :(得分:1)

我认为这是因为选择了日期格式,使用NSDateFormatter指定适当的日期格式并在字符串中使用它,这是一个链接Link