Objective c 将字符串时区转换为NSTimeZone
我在传入字符串中有一个这样格式的时区,我无法控制它(它来自服务器的字典)Objective c 将字符串时区转换为NSTimeZone,objective-c,nsdate,Objective C,Nsdate,我在传入字符串中有一个这样格式的时区,我无法控制它(它来自服务器的字典) tzHours=NSString*@“+01:00” 但我需要将其转换为NSTimeZone,以便格式化日期 NSString *date = [dateDictionary safeObjectForKey:@"date"]; NSString *time = [dateDictionary safeObjectForKey:@"time"]; NSString *tzHours = [dateDicti
tzHours=NSString*@“+01:00”
但我需要将其转换为NSTimeZone
,以便格式化日期
NSString *date = [dateDictionary safeObjectForKey:@"date"];
NSString *time = [dateDictionary safeObjectForKey:@"time"];
NSString *tzHours = [dateDictionary safeObjectForKey:@"timeZone"];
// Format the date based off the timezone
NSDateFormatter *formatter = [self _apiDateFormatterWithTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
但我不确定如何做到这一点
有什么好办法来处理这个问题吗
非常感谢既然您有三个
NSString
s:日期
,时间
和tzHours
。你可以这样做:
NSString *date = @"2015-01-01";
NSString *time = @"14:00:01";
NSString *tzHours = @"+01:00";
NSString *dateString = [NSString stringWithFormat:@"%@ %@ %@", date, time, tzHours];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZZZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *dateObject = [dateFormatter dateFromString:dateString];
NSDateFormatter
的dateFormat
自然取决于date
和time
的格式
另外,请记住缓存
NSDateFormatter
,否则会影响性能。因此,如果您有三个NSString
s:date
、time
和tzHours
。你可以这样做:
NSString *date = @"2015-01-01";
NSString *time = @"14:00:01";
NSString *tzHours = @"+01:00";
NSString *dateString = [NSString stringWithFormat:@"%@ %@ %@", date, time, tzHours];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZZZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *dateObject = [dateFormatter dateFromString:dateString];
NSDateFormatter
的dateFormat
自然取决于date
和time
的格式
另外,请记住缓存
NSDateFormatter
,否则会影响性能。因此,如果您有三个NSString
s:date
、time
和tzHours
。你可以这样做:
NSString *date = @"2015-01-01";
NSString *time = @"14:00:01";
NSString *tzHours = @"+01:00";
NSString *dateString = [NSString stringWithFormat:@"%@ %@ %@", date, time, tzHours];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZZZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *dateObject = [dateFormatter dateFromString:dateString];
NSDateFormatter
的dateFormat
自然取决于date
和time
的格式
另外,请记住缓存
NSDateFormatter
,否则会影响性能。因此,如果您有三个NSString
s:date
、time
和tzHours
。你可以这样做:
NSString *date = @"2015-01-01";
NSString *time = @"14:00:01";
NSString *tzHours = @"+01:00";
NSString *dateString = [NSString stringWithFormat:@"%@ %@ %@", date, time, tzHours];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZZZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *dateObject = [dateFormatter dateFromString:dateString];
NSDateFormatter
的dateFormat
自然取决于date
和time
的格式
另外,请记住缓存NSDateFormatter,否则会影响性能。将三个NSStrings组合成一个字符串并在整个字符串上使用NSDateFormatter是否更好?非常确定,您必须使用自己的解析器来获取数字,然后使用偏移值创建时区。(
stringseparatedbystring:@):“
)好的,酷。我会试试这个!我不知道如何将所有3个字符串合并成一个有效的日期字符串。将三个NSString合并成一个字符串并在整个字符串上使用NSDateFormatter是否更好?非常确定,您必须使用自己的解析器来获取数字,然后使用偏移量值创建时区。(stringseparatedbystring:@):“
)好的,酷。我会试试这个!我不知道如何将所有3个字符串合并成一个有效的日期字符串。将三个NSString合并成一个字符串并在整个字符串上使用NSDateFormatter是否更好?非常确定,您必须使用自己的解析器来获取数字,然后使用偏移量值创建时区。(stringseparatedbystring:@):“
)好的,酷。我会试试这个!我不知道如何将所有3个字符串合并成一个有效的日期字符串。将三个NSString合并成一个字符串并在整个字符串上使用NSDateFormatter是否更好?非常确定,您必须使用自己的解析器来获取数字,然后使用偏移量值创建时区。(stringsSeparatedByString:@):“
)好的,很酷。我会试试这个!我不知道如何将所有3个字符串合并成一个有效的日期字符串。此外,您可能需要将日期格式化程序的“区域设置”设置为“POSIX”,以避免依赖于用户的区域首选项。比较。您应该能够对时间偏移使用ZZZZZ
而不是Z
,这将解析-HH:MM
-请参见。这样可以避免删除:
@CRD:是的,iOS 6和OS X 10.8中添加了对ZZZZZ的支持。此外,您可能需要设置将日期格式化程序的“区域设置”设置为“POSIX”,以避免依赖于用户的区域首选项。比较。您应该能够对时间偏移使用ZZZZZ
而不是Z
,这将解析-HH:MM
-请参见。这样可以避免删除:
@CRD:是的,iOS 6和OS X 10.8中添加了对ZZZZZ的支持。此外,您可能需要设置将日期格式化程序的“区域设置”设置为“POSIX”,以避免依赖于用户的区域首选项。比较。您应该能够对时间偏移使用ZZZZZ
而不是Z
,这将解析-HH:MM
-请参见。这样可以避免删除:
@CRD:是的,iOS 6和OS X 10.8中添加了对ZZZZZ的支持。此外,您可能需要设置将日期格式化程序的“区域设置”设置为“POSIX”,以避免依赖于用户的区域首选项。比较。您应该能够对时间偏移使用ZZZZZ
而不是Z
,这将解析-HH:MM
-请参见。这避免了删除:
@CRD:是的,iOS 6和OS X 10.8中添加了对ZZZZZ的支持。