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