Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将字符串时区转换为NSTimeZone_Objective C_Nsdate - Fatal编程技术网

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的支持。