在某个项目想获取当前时间的星期,小时,分钟,秒

57 views
Skip to first unread message

dbj...@163.com

unread,
Dec 21, 2011, 11:24:57 PM12/21/11
to iOS development
在某个项目想获取当前时间的星期,小时,分钟,秒和AM/PM的NSString的值,使用了以下代码:
1. NSDateFormatter *tempDate = [[NSDateFormatter alloc]init];
2. [tempDate setLocale:[NSLocale currentLocale]];
3. //设定格式 weekday:24hour:minnute:second:am(pm)
4. [tempDate setDateFormat:@"EEEE:hh:mm:ss:a"];//12小时制
5. //[tempDate setDateFormat:@"EEEE:HH:mm:ss:a"];//24小时制
6. NSString *tempDatestring = [ tempDate stringFromDate:now ];
上述的代码返回的是一个NSString值,不过要注意(因为我们可能会经常用到),返回的NSString的值是会受到iphone本身设置的
12/24小时制影响的。

具体表现为:(以星期三,下午4点20分50秒为例)

1、当手机本身的是使用12小时制,那么代码
1. [tempDate setDateFormat:@"EEEE:hh:mm:ss:a"];//12小时制
返回的字符串是“Wensday:4:20:50:PM”;代码
1. [tempDate setDateFormat:@"EEEE:HH:mm:ss:a"];//24小时
返回的字符串是“Wensday:16:20:50:PM”;


2、当手机本身使用的是24小时制时,那么代码
1. [tempDate setDateFormat:@"EEEE:hh:mm:ss:a"];//12小时制
返回的字符串是“Wednesday:16:20:50:”;代码
1. [tempDate setDateFormat:@"EEEE:HH:mm:ss:a"];//24小时
返回的字符串也是“Wednesday:16:20:50:”;

可以看出,当手机本身使用的是24小时制时,foramt的“a”返回的是一个nil值,format的“hh”和“HH”返回的值是一样。


因此如果程序要显示12/24两种不同的格式时,要注意这个问题。(这个要在真机上才能测试出来)。

使用setDateFormat这个方法的好处在,获取到的星期和AM/PM会返回当前区域的语言。就是说,如果手机的“Region
Format”是“china”,那么Format的“a”会返回“上午”或者“下午”,format的“EEEE”会返回“星期一”(前提是手机使用
的是12小时制,而且setLocale:[NSLocale currentLocale])。

Reply all
Reply to author
Forward
0 new messages