在可可,我怎么使用NSTimeZone获得系统时区的字符串偏移?
-
20-08-2019 - |
题
有关PDT,我想 “-0700”。
我凑了过去的日期,以确定如何不久前发生了一件事情。
NSDate *then = [NSDate dateWithString:@"1976-04-01 12:34:56 -0700"]; // Note the hard-coded time zone at the end
我在别处构造日期字符串,但我不知道如何访问当地时区。
我读可可还有NSTimeZone和NSDate的类引用苹果的日期和时间编程主题,但它实在太难受,一起把信息。我真的可以使用的几行代码只是为了显示它是如何使用的。
更新:虽然这个挣扎,我是使用命令行模板,这样我就可以快速尝试的东西编写代码。我只是想在iPhone上我以前的代码和我得到的的NSDate可能不响应“+ dateWithString:” 很抱歉,如果这增加了混乱,谁知道苹果会改变这样一个基本的类
解决方案
在时区偏移依赖于日期中大部分是使用日光节约时间/夏令时世界那些部分。
的唯一正确的方法是生成从日期和时间区的整个串起来。使用NSDateFormatter此。
其他提示
使用NSDateFormatter
从字符串建立的NSDate:
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSDate *formatterDate;
formatterDate = [inputFormatter dateFromString:@"1976-04-01 12:34:56 -0700"];
NSString *dateString = [inputFormatter stringFromDate:formatterDate];
NSLog(@"date:%@", dateString);
这样,你得到的字符串的本地时间,例如由字符串指定的日期:
“1976年4月1日12时34分56秒-0700”
是在时区-0700
,(我在时区GMT +1000),所以我得到:
2009-11-17 22:13:46.480 CMDLINE [10593:903]日期:1976年4月2日 5时34分56秒+1000
,最好的方法是可能使用一个简单的日历格式
NSCalendarDate * date = [NSCalendarDate calendarDate];
[date setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PDT"]];
NSLog([date descriptionWithCalendarFormat:@"%z"]);
将输出 '-0700'
或者如果你想让系统(不知道哪个你问的)
的当前时区离开了第二行不隶属于 StackOverflow