date时间格式从iPhone设置和GMT偏移

我有date时间格式的string,如: 2013-05-28 10:56:31

我怎样才能把这个string格式化为iPhone的默认格式? (在iPhone设置中)

以及如何设置date时间格林尼治标准时间加上时移偏移量(在iphone中设置)。 例如GMT + 1

这可能吗?

你可以使用NSDateFormatter来实现这一点。

 NSString *dateString = @"2013-05-28 10:56:31"; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; //Special Locale for fixed dateStrings NSLocale *locale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"]; [formatter setLocale:locale]; //Assuming the dateString is in GMT+00:00 //formatter by default would be set to local timezone NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; [formatter setTimeZone:timeZone]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date =[formatter dateFromString:dateString]; //After forming the date set local time zone to formatter NSTimeZone *localTimeZone = [NSTimeZone localTimeZone]; [formatter setTimeZone:localTimeZone]; NSString *newTimeZoneDateString = [formatter stringFromDate:date]; NSLog(@"%@",newTimeZoneDateString); 

几个使用dateFormatter的指针。

  1. 如果string不包含有关时区的任何信息,并且它不在设备中,则始终将时区设置为dateFormatter。
  2. 对于固定格式的dateStrings,始终使用en_US_POSIX语言环境
  3. login控制台时的NSDate总是以GMT + 00:00显示。 NSDate没有时区,只是在不同的时区表示不同。
  4. 将生成的date转换为任何时区,方法是将新的时区设置为格式化程序。 格式化程序不会更改date,只是重新计算在新时区中将如何表示。

请参阅有关NSDateFormatter的文档,特别是dateFromString ,它返回“使用接收者的当前设置解释的string的date表示forms”。