Iphone NSDate,根据用户';s地区
我在根据用户的区域设置为用户显示日期时遇到了这个问题。但我希望日期只由数字组成。例如:2011/12/04 19:20:11。问题是,我曾尝试使用NSDateFormatter,根据区域设置,它只能显示数字日期或带有以下文字的日期:2011年1月1日,19:20:11。我希望区域设置只影响月份、日期和年份的顺序。这可以做到吗?老实说,在我读到最后一行之前,我一直认为这是个糟糕的问题。我希望区域设置只影响月、日和年的顺序。可以这样做吗 诸如Iphone NSDate,根据用户';s地区,iphone,ios,nsdate,nsdateformatter,Iphone,Ios,Nsdate,Nsdateformatter,我在根据用户的区域设置为用户显示日期时遇到了这个问题。但我希望日期只由数字组成。例如:2011/12/04 19:20:11。问题是,我曾尝试使用NSDateFormatter,根据区域设置,它只能显示数字日期或带有以下文字的日期:2011年1月1日,19:20:11。我希望区域设置只影响月份、日期和年份的顺序。这可以做到吗?老实说,在我读到最后一行之前,我一直认为这是个糟糕的问题。我希望区域设置只影响月、日和年的顺序。可以这样做吗 诸如[formatter setDateFormat:@“HH
[formatter setDateFormat:@“HH:mm”]
之类的固定日期格式将不受区域设置更改的影响。最好的方法是使用“NSDateFormatterStyle
”为您完成繁重的工作
部分问题是您没有设置正确的日期格式化程序样式NSDateFormatterShortStyle
已输出所需的日期格式
就时间格式而言,如果用户将系统设置为24小时时钟,则NSTimeZoneNameStyleShortGeneric
应能立即工作。但如果不是这样,那是可以解决的。它的美妙之处在于你不必检查
// Example Date Now
NSDate *now = [NSDate date];
// Formatter set to proper locale by default
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// Set formatter to short styles
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSTimeZoneNameStyleShortGeneric];
此时,您的格式化程序将已经设置了自己的格式字符串“M/d/yy h:mm:ss a
”,这将适用于美国。所以在这一点上,我们所要做的就是稍微改变一下格式
// Remove the AM/PM from the format string
formatter.dateFormat = [formatter.dateFormat stringByReplacingOccurrencesOfString:@"a" withString:@""];
// Change 12h clock to 24h clock
formatter.dateFormat = [formatter.dateFormat stringByReplacingOccurrencesOfString:@"h" withString:@"H"];
现在您的日期格式应该是“M/d/yy H:mm:ss
”。这是你想要的美国版本。您可以使用log语句进行确认
NSLog(@"%@",[formatter stringFromDate:now]);
请注意,当您将格式中的“
h
”更改为“h
”时,您不在乎它在哪里。因此,如果在某些地区,他们有一个相反的时间格式,它将被更改,但保留在原来的位置。老实说,在我读到最后一行之前,我认为这是一个糟糕的问题。我希望区域设置只影响月、日和年的顺序。可以这样做吗
诸如[formatter setDateFormat:@“HH:mm”]
之类的固定日期格式将不受区域设置更改的影响。最好的方法是使用“NSDateFormatterStyle
”为您完成繁重的工作
部分问题是您没有设置正确的日期格式化程序样式NSDateFormatterShortStyle
已输出所需的日期格式
就时间格式而言,如果用户将系统设置为24小时时钟,则NSTimeZoneNameStyleShortGeneric
应能立即工作。但如果不是这样,那是可以解决的。它的美妙之处在于你不必检查
// Example Date Now
NSDate *now = [NSDate date];
// Formatter set to proper locale by default
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// Set formatter to short styles
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSTimeZoneNameStyleShortGeneric];
此时,您的格式化程序将已经设置了自己的格式字符串“M/d/yy h:mm:ss a
”,这将适用于美国。所以在这一点上,我们所要做的就是稍微改变一下格式
// Remove the AM/PM from the format string
formatter.dateFormat = [formatter.dateFormat stringByReplacingOccurrencesOfString:@"a" withString:@""];
// Change 12h clock to 24h clock
formatter.dateFormat = [formatter.dateFormat stringByReplacingOccurrencesOfString:@"h" withString:@"H"];
现在您的日期格式应该是“M/d/yy H:mm:ss
”。这是你想要的美国版本。您可以使用log语句进行确认
NSLog(@"%@",[formatter stringFromDate:now]);
请注意,当您将格式中的“
h
”更改为“h
”时,您不在乎它在哪里。因此,如果在某些区域设置中,他们的时间格式是相反的,那么时间格式将被更改,但保留在原来的位置。谢谢,解决了这个问题!谢谢你解决了这个问题!