7
我希望能夠根據iPhone配置獲取運行應用程序的本地日期和時間。具體而言,我需要日期格式爲mm/dd或dd/mm(或dd.mm,mm.dd,dd-mm,mm-dd等),具體取決於語言環境,時間爲hh:mm。這可能與一些SDK方法的組合?使用NSDate的本地化日期(月和日)和時間
謝謝!
我希望能夠根據iPhone配置獲取運行應用程序的本地日期和時間。具體而言,我需要日期格式爲mm/dd或dd/mm(或dd.mm,mm.dd,dd-mm,mm-dd等),具體取決於語言環境,時間爲hh:mm。這可能與一些SDK方法的組合?使用NSDate的本地化日期(月和日)和時間
謝謝!
好吧,我相信下面的代碼工作爲我所需要的:
NSString *dateComponents = @"yMMd";
NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:[NSLocale currentLocale]];
NSArray *tmpSubstrings = [dateFormat componentsSeparatedByString:@"y"];
NSString *tmpStr;
NSRange r;
if ([[tmpSubstrings objectAtIndex:0] length] == 0) {
r.location = 1;
r.length = [[tmpSubstrings objectAtIndex:1] length] - 1;
tmpStr = [[tmpSubstrings objectAtIndex:1] substringWithRange:r];
} else {
r.location = 0;
r.length = [[tmpSubstrings objectAtIndex:0] length] - 1;
tmpStr = [[tmpSubstrings objectAtIndex:0] substringWithRange:r];
}
NSString *newStr = [[NSString alloc] initWithFormat:@"%@ H:mm", tmpStr];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:newStr];
NSString *formattedDateString = [formatter stringFromDate:[NSDate date]];
我已經修改了代碼,以便它只是需要在不改變的日期和時間出的NSDate對象:
NSDate* date = [NSDate date];
NSString* datePart = [NSDateFormatter localizedStringFromDate: date
dateStyle: NSDateFormatterShortStyle
timeStyle: NSDateFormatterNoStyle];
NSString* timePart = [NSDateFormatter localizedStringFromDate: date
dateStyle: NSDateFormatterNoStyle
timeStyle: NSDateFormatterShortStyle];
NSLog(@"Month Day: %@", datePart);
NSLog(@"Hours Min: %@", timePart);
工作正常。但是,如果本地化日期的年份是第一年,那麼此代碼會中斷,不是嗎? – DNewell 2011-03-04 19:58:31
是的。有沒有一個本地化做這樣的事情?問題是我們沒有可靠的方法來確定哪一個數字是來自字符串的年份。你最好的辦法是不要試圖修改DateFormatter的內容......我修改了我的答案中的代碼來做到這一點。 – 2011-03-05 15:56:32
如果你看看我的代碼,獲取日期格式的行就是祕密。這給了我本地化的格式:y/MM/d或d/MM/y或MM/d/y或其他。一旦我得到y和分隔符被刪除,我可以使用該字符串爲格式化程序的setDateFormat參數,並獲得沒有年份的適當的本地化日期。 – DNewell 2011-03-05 17:35:58