使用 NSDateFormatter 转换后的时间变化
time change after converting using NSDateFormatter
我正在尝试将字符串转换为日期。它工作正常,但时间与字符串不同。这是我的示例代码:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormat dateFromString:@"2015-03-09 07:40:00 pm"];
NSLog(@"%@", date);
而且,输出是 2015-03-09 08:16:43.794 testAlarm[1091:40476] 2015-03-09 10:40:00 +0000
注意小时是 10 但在字符串中小时是 07
时间是使用您当地的时区读取的,显示的 NSDate 使用 UTC 时间(在不使用特定日期格式器时总是如此
你明确告诉它使用本地时区
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]]; //!
虽然 NSDate 本身是一个没有任何时区概念的时间戳
=> 使用正确的日期格式化程序打印它。只是记录它总是不使用时区=> UTC
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
NSString *input = @"2015-03-09 07:40:00 pm";
NSLog(@"%@", input); //local timezone
NSDate *date = [dateFormat dateFromString:input];
NSLog(@"%@", date); //utc!
NSString *str = [dateFormat stringFromDate:date];
NSLog(@"%@", str); //local timezone
}
}
我正在尝试将字符串转换为日期。它工作正常,但时间与字符串不同。这是我的示例代码:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormat dateFromString:@"2015-03-09 07:40:00 pm"];
NSLog(@"%@", date);
而且,输出是 2015-03-09 08:16:43.794 testAlarm[1091:40476] 2015-03-09 10:40:00 +0000
注意小时是 10 但在字符串中小时是 07
时间是使用您当地的时区读取的,显示的 NSDate 使用 UTC 时间(在不使用特定日期格式器时总是如此
你明确告诉它使用本地时区
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]]; //!
虽然 NSDate 本身是一个没有任何时区概念的时间戳
=> 使用正确的日期格式化程序打印它。只是记录它总是不使用时区=> UTC
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
[dateFormat setTimeZone:[NSTimeZone defaultTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
NSString *input = @"2015-03-09 07:40:00 pm";
NSLog(@"%@", input); //local timezone
NSDate *date = [dateFormat dateFromString:input];
NSLog(@"%@", date); //utc!
NSString *str = [dateFormat stringFromDate:date];
NSLog(@"%@", str); //local timezone
}
}