我必须格式化日期如下:
2014年7月19日10:27:16 IS
我怎样才能做到这一点?我应该将“ IST”作为字符串对象发送吗?
我试过了 -
NSDate* sourceDate = [NSDate date];
NSLog(@"Date is : %@", sourceDate);
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
NSLog(@"TimeZone is : %@", currentTimeZone);
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init] ;
dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss Z"];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"%@",[dateFormatter stringFromDate:sourceDate]);
我已经根据Apple的官方文档和Unicode日期格式器标准尝试了几种时区格式器方案。
我这样设置时区:
NSTimeZone *_timezone = [NSTimeZone timeZoneWithName:@"IST"];
可以为我提供适当的时区和+0530
偏移量,因此该实例用于my的实例NSDateFormatter
。
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc]init];
[_dateFormatter setTimeZone:_timezone];
这是有关我使用不同的format-scpecifiers的列表:
z
= GMT+0530 IST
zz
= GMT+0530 IST
zzz
= GMT+0530 IST
zzzz
= India Standard Time IST
zzzzz
= India Standard Time IST
似乎没有一个标准的格式说明符只能提供实际的"IST"
字符串形式,匹配项是"India Standard Time IST"
with格式说明符,zzzz
并且zzzzz
–但您可以看到"GMT+0530 IST"
其余格式符仍然包含它。
注:其它格式修饰符如Z
,v
,V
,x
或X
似乎没有任何有用的。
我已经阅读了有关格式说明符的更多信息,文档说有关使用z
:
所述短特定的非位置格式(例如PDT)。在不可用的地方,请退回简短的本地化GMT格式。
对我意味着什么,实际的短特定非定位格式为印度标准时间通过不可NSDateFormatter
直接-或因某种原因被指定为"GMT+0530 IST"
不如短"IST"
†。
另一方面,我不确定服务器端是否接受了长整型非位置格式(aka "India Standard Time IST"
),或者时区必须"IST"
仅由字符串标记。
恐怕如果只希望使用最新格式,则您将需要手动和大胆地添加它,例如:
[_dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];
NSString *_date = [[_dateFormatter stringFromDate:[NSDate date]] stringByAppendingString:@" IST"];
注意:我也发现月份名称也应该大写,我不确定这是另一个期望还是月份名称的通用大写形式(例如“ Jul”,“ Sep”等...)对您的服务器端来说已经足够好了–在我当前的回答中,我没有大写它们。
†我没有找到任何可以描述实际短格式的标准,因此基于unicode标准,我认为"IST"
应当是的短格式,而不是"GMT+0530 IST"
–但这仅基于我个人的推测。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句