从 NSTimeZone 以 "GMT 5:30" NSString 格式获取系统时区
Get system time zone from NSTimeZone in "GMT 5:30" NSString format
我对 objective C 有点陌生。
我正在尝试以字符串格式获取系统时区。我的字符串中只需要“GMT 5:30”。
_devTimezone = (NSString*)[NSTimeZone systemTimeZone];
您可以将日期描述作为字符串,然后将所需的子字符串作为
NSString *myDate = [[NSDate date] descriptionWithLocale:[NSLocale systemLocale]];
myDate=[myDate substringWithRange:NSMakeRange(26, 9)];
NSLog(@"%@",myDate);
你会在日志中得到 GMT+05:30。
****已编辑****
如果你不确定什么是索引
您可以设置日期格式,然后访问索引
NSString *dateStr = @"Wed, 14 Oct 2015 12:53:58 +0000";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSString *myDate = [date descriptionWithLocale:[NSLocale systemLocale]];
myDate=[myDate substringWithRange:NSMakeRange(26, 9)];
NSLog(@"%@",myDate);
快乐编码..:)
您可以使用 NSTimeZone
方法 secondsFromGMT
获取偏移量作为 NSInteger
值,然后使用 NSString
方法 stringWithFormat
和将整数值分为小时和分钟的基本算法。
示例代码:
- (NSString *) getTimeZoneOffset:(NSTimeZone *)timezone
{
NSInteger minutesFromGMT = timezone.secondsFromGMT / 60;
// handle negative offsets
char sign;
if (minutesFromGMT < 0)
{
sign = '-';
minutesFromGMT = -minutesFromGMT; // make positive
}
else
sign = '+';
// split in hours and minutes
NSInteger hoursFromGMT = minutesFromGMT / 60;
minutesFromGMT %= 60;
// format as string - making sure minutes is two digits with leading zero if needed
// cast to int is OK as no value will be greater than 59!
return [NSString stringWithFormat:@"GMT%c%d:%02d", sign, (int)hoursFromGMT, (int)minutesFromGMT];
}
HTH
这样做。
NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//set timezone to GMT 5:30.
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSString *currentTime = [dateFormatter stringFromDate:currentDate];
NSLog(@"User's current time %@",currentTime);
希望对你有帮助。
我对 objective C 有点陌生。 我正在尝试以字符串格式获取系统时区。我的字符串中只需要“GMT 5:30”。
_devTimezone = (NSString*)[NSTimeZone systemTimeZone];
您可以将日期描述作为字符串,然后将所需的子字符串作为
NSString *myDate = [[NSDate date] descriptionWithLocale:[NSLocale systemLocale]];
myDate=[myDate substringWithRange:NSMakeRange(26, 9)];
NSLog(@"%@",myDate);
你会在日志中得到 GMT+05:30。
****已编辑****
如果你不确定什么是索引 您可以设置日期格式,然后访问索引
NSString *dateStr = @"Wed, 14 Oct 2015 12:53:58 +0000";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSString *myDate = [date descriptionWithLocale:[NSLocale systemLocale]];
myDate=[myDate substringWithRange:NSMakeRange(26, 9)];
NSLog(@"%@",myDate);
快乐编码..:)
您可以使用 NSTimeZone
方法 secondsFromGMT
获取偏移量作为 NSInteger
值,然后使用 NSString
方法 stringWithFormat
和将整数值分为小时和分钟的基本算法。
示例代码:
- (NSString *) getTimeZoneOffset:(NSTimeZone *)timezone
{
NSInteger minutesFromGMT = timezone.secondsFromGMT / 60;
// handle negative offsets
char sign;
if (minutesFromGMT < 0)
{
sign = '-';
minutesFromGMT = -minutesFromGMT; // make positive
}
else
sign = '+';
// split in hours and minutes
NSInteger hoursFromGMT = minutesFromGMT / 60;
minutesFromGMT %= 60;
// format as string - making sure minutes is two digits with leading zero if needed
// cast to int is OK as no value will be greater than 59!
return [NSString stringWithFormat:@"GMT%c%d:%02d", sign, (int)hoursFromGMT, (int)minutesFromGMT];
}
HTH
这样做。
NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//set timezone to GMT 5:30.
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSString *currentTime = [dateFormatter stringFromDate:currentDate];
NSLog(@"User's current time %@",currentTime);
希望对你有帮助。