Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDate,根据用户';s地区_Iphone_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

Iphone NSDate,根据用户';s地区

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

我在根据用户的区域设置为用户显示日期时遇到了这个问题。但我希望日期只由数字组成。例如:2011/12/04 19:20:11。问题是,我曾尝试使用NSDateFormatter,根据区域设置,它只能显示数字日期或带有以下文字的日期:2011年1月1日,19:20:11。我希望区域设置只影响月份、日期和年份的顺序。这可以做到吗?

老实说,在我读到最后一行之前,我一直认为这是个糟糕的问题。我希望区域设置只影响月、日和年的顺序。可以这样做吗

诸如
[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
”时,您不在乎它在哪里。因此,如果在某些区域设置中,他们的时间格式是相反的,那么时间格式将被更改,但保留在原来的位置。

谢谢,解决了这个问题!谢谢你解决了这个问题!