2011-02-25 56 views
1

我使用多個NSDateComponents來顯示一個時鐘,其中的各個值在整個屏幕中被分解,但我遇到了格式化問題。NSDateComponents格式化問題

秒數顯示1-60不是00-59,小時數是24小時格式不是12.有什麼方法可以對它們進行不同的格式化嗎?

現在我已經獲得了作爲NSInteger的值,將它們轉換爲NSString並將字符串應用於UILabel。誰能幫忙?

有沒有@"%"我應該使用的格式? (現在我正在使用@"d")如果是的話,我可以在哪裏找到這些不同類型的列表?

回答

2

當你已經擁有的價值觀NSInteger再假設他們被稱爲minuteshours第一:

minutes -= 1; // convert 1 -> 60 to 0 -> 59 
if(hours > 12) hours -= 12; // convert 13 -> 24 to 1 -> 12 

現在設置它們的格式都使用"%02d" - 細分是0 - 零填充,2 - 字段寬度,d - 十進制整數。

您可以通過查找在printf

+0

感謝很多的文檔找到所有的格式規範(除了%@的對象)。我覺得有一個快速的狐狸,我不知道最好的方法。在「%02d」中,是否有一個地方可以放置或解釋所有這些不同的格式?但是你又一次幫助我。 – HenryGale 2011-02-25 18:10:58

+0

在'printf' – CRD 2011-02-25 18:16:58

+0

ow的手冊頁上,你已經提出了這個問題。對不起,我只是分開。謝謝 – HenryGale 2011-02-25 18:23:41

0

您可以使用NSDateFormatter將日期和時間格式化爲NSString。

NSDate *date = [dateFormatter dateFromString:@"01.02.1989"]; 
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
// Convert my date object into yyyy-mm-dd string object 
[dateFormatter1 setDateFormat:@"yyyy-MM-dd"]; 
NSString *formattedStringDate = [dateFormatter1 stringFromDate:date]; 

有日期的列表/時間格式的代碼在這裏:Date formatting

我希望這有助於! N

0

我以前有類似的問題,請嘗試檢查此鏈接。它列出了所有各種日期格式化程序以及它們的工作方式。 http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

對於你的特定問題,我想你想要h:mm:ss a。 h表示分鐘,mm表示分鐘,ss表示秒(可能s是0填充的那個,我不確定),a給出AM/PM格式。 另外,%d是整數的正確格式,我相信%@是其他字符串的正確格式。

希望這會有所幫助。

0

通過NSCalendar轉換的NSDateComponents到一個NSDate然後使用一個NSDateFormatter(你可以用每件一個日期格式,如果你想):

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDate *date = [calendar dateFromComponents:yourDateComponents]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateStyle:NSDateFormatterNoStyle]; 
[formatter setTimeStye:NSDateFormatterLongStyle]; 
NSString *timeString = [formatter stringFromDate:date]; 
[formatter release]; 

注意,這將使用用戶的時間格式;請參閱使用自定義格式的文檔。