iphone - NSDate真的很奇怪

标签 iphone objective-c ios nsdate nsdateformatter

我有时间:7:46 am
我想将其转换为NSDate。我这样做:

NSDateFormatter *f = [NSDateFormatter new];
[f setDateFormat:@"h:mm a"];
NSDate *sr = [f dateFromString:@"7:46 am"];

我NSLog sr我得到1969-12-31 22:46:00 +0000
那些时间不一样。为什么这么乱呢?

最佳答案

不,这并不奇怪。 NSDateConverter和NSDate只是在这里完成其预期的工作。

您正在尝试将"7:46 am"转换为日期。它仅包含时间。字符串中未指定日期。如果未指定日期,则NSDate将默认为"1970-01-01"(Unix时期)。因此,在转换字符串之后,您将获得日期"1970-01-01 7:46 am"。当您尝试在NSLog中显示此日期时,if将在调整timeZone偏移值后显示日期。我猜你住在日本或韩国。您所在地区的偏移量可能是+09:00。因此它将显示日期减去偏移量。因此,您在日志中看到"1969-12-31 22:46:00 +0000"

您可以使用以下方法将时间设置为特定日期(可能是今天)。

NSString *timeStr = @"7:46 am";
NSDateFormatter *f = [NSDateFormatter new];
[f setDateFormat:@"yyyy-MM-dd"];
NSString *dateStr = [f stringFromDate:[NSDate date]]; // dateStr = 2011-06-10
dateStr = [dateStr stringByAppendingFormat:@" %@", timeStr]; // dateStr = 2011-06-10 7:46 am 
[f setDateFormat:@"yyyy-MM-dd h:mm a"];
NSDate *sr = [f dateFromString:dateStr];

关于iphone - NSDate真的很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301705/

相关文章:

objective-c - 在UITableView中显示字典数组

iphone - 在ios中使用打印机打印nsmutable数组

iphone - UIToolbar 上的按钮间距

iphone - 如何翻转 UIImageView?

ios - 设置标签文本等于数组值

ios - 在控制台中使用 UIWebView

objective-c - swift字典人口问题: type 'AnyObject' does not conform to protocol 'NSCopying'

ios - iOS 上的 MS Word 支持

iphone - 如何使用 abbyy mobile sdk for iphone 获取坐标

ios - 触摸 UIScrollView 时应用程序崩溃