- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我必须按如下格式设置日期:
2014 年 7 月 19 日 10:27:16 中国标准时间
我该怎么做?我应该将“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's official docs 尝试了几种时区格式化程序方案和 Unicode date-formatter standards .
我这样初始化时区:
NSTimeZone *_timezone = [NSTimeZone timeZoneWithName:@"IST"];
用 +0530
偏移向我提供了正确的时区,因此它被用于我的 NSDateFormatter
的实例。
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc]init];
[_dateFormatter setTimeZone:_timezone];
这里是关于我使用不同格式规范的列表:
z
= GMT+0530 IST
zz
= GMT+0530 IST
zzz
= GMT+0530 IST
zzzz
= 印度标准时间 IST
zzzzz
= 印度标准时间 IST
似乎没有一个标准格式说明符可以提供实际的 "IST"
仅作为字符串,匹配是 "India Standard Time IST"
与格式说明符 zzzz
和 zzzzz
– 但您可以看到 "GMT+0530 IST"
仍然包含它和其余的格式化程序。
注意:其他格式说明符,如 Z
、v
、V
、x
或 X
似乎也没用。
我已经阅读了更多关于格式说明符的内容,文档中提到使用 z
:
The short specific non-location format (e.g. PDT). Where that is unavailable, falls back to the short localized GMT format.
这对我来说意味着,印度标准时间的实际简短特定非位置格式不能直接通过NSDateFormatter
获得——或者某些原因指定为 "GMT+0530 IST"
而不是短 "IST"
†。
另一方面,我不确定您的服务器端是否接受long specific non-location format(又名 "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"
的缩短格式 – 但这仅基于我个人的推测。
关于ios - 如何将日期格式化为 IST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24928666/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!