objective-c - 使用 objective-c 中用户选择的时间创建NSDate

标签 objective-c ios time calendar nsdate

int hour = [[array objectAtIndex:0] intValue]; //hour = 17
int min = [[array objectAtIndex:1] intValue]; //min = 51
NSLog(@"hour value is %d",hour);
NSLog(@"min value is %d",min);
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];

int year = [components year];
int month = [components month];
int day = [components day];
NSDateFormatter  *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;

[components setYear:year];
[components setMonth:month];
[components setDay:day];
[components setHour:hour];
[components setMinute:min];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] ;
NSDate *itemDate = [cal dateFromComponents:components];
NSLog(@"the date is %@",itemDate);

输出:
日期是2012-11-03 01:00:00 +0000。但是我希望输出是2012-11-03 17:51:00 ..我怎么能得到它?我在做什么错?

最佳答案

看来您的问题很简单,就是没有意识到NSDate对象将使用您自己的当前时区创建,但是NSLog将使用UTC打印出NSDate描述。由于您似乎处于太平洋夏令时间(美国时钟将在本周末晚些时候PST),因此NSLog应该显示所需的日期/时间,但看起来要7个小时(本周末晚8个小时)关闭。

要显示本地时区的日期,请使用NSDateFormatterNSDate转换为NSString

关于objective-c - 使用 objective-c 中用户选择的时间创建NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205041/

相关文章:

ios - 如何让 AVAssetReader 循环?

Java:使用 currentTimeMillis() 获取时间很长,如何以 X 小数位精度输出它?

java - java中算法的时间复杂度

C++ 自纪元以来给定小时和分钟的秒数

objective-c - 如何使用代码隐藏 NSToolbarItem?

c++ - 在 Cocoa 项目中使用 C++ 代码进行河豚加密

objective-c - iOS 应用以横向模式启动

ios - 为 MCSession 授权证书

ios - 使用 swift 在运行时添加/删除 UITableView 中的部分

iOS - iBeacon - 使用程序更改 UUID