iphone之按照本地格式显示日期
lidabo
阅读:67
2025-06-02 22:19:02
评论:0
我想按照不同国家/地区的本地格式显示日期。
我从这里得到了代码:Get the user's date format? (DMY, MDY, YMD)
NSString *base = @"MM/dd/yyyy";
NSLocale *locale = [NSLocale currentLocale];
NSString *format = [NSDateFormatter dateFormatFromTemplate:base options:0 locale:locale];
但是如何从格式中获取
dd,mm,yyyy的顺序?
请您参考如下方法:
这将为您提供currentLocale的格式:
NSString *dateComponents = @"ddMMyyyy";
NSLocale *locale = [NSLocale currentLocale];
NSString* format = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:locale];
要以正确的格式为
NSDate打印
currentLocale对象,请尝试以下操作:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [NSLocale currentLocale];
[dateFormatter setLocale:locale];
NSString *dateComponents = @"ddMMyyyy";
NSString* format = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:locale];
NSDate* date = [NSDate date];
[dateFormatter setDateFormat:format];
NSString *newDateString = [dateFormatter stringFromDate:date];
NSLog(@"Current date for locale: %@", newDateString);
如果您确实想要dd,MM和yyyy元素的数字顺序,则可以像以下代码一样进行。它不是(!)漂亮,我真的认为您应该重新考虑是否有必要获取元素的顺序。
NSString *dateComponents = @"ddMMyyyy";
NSLocale *locale = [NSLocale currentLocale];
NSString* format = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:locale];
int currentOrder = -1;
int nextIndex = 0;
int dd = -1;
int MM = -1;
int yyyy = -1;
NSString* workingSubstring;
while (dd == -1 || MM == -1 || yyyy == -1)
{
workingSubstring = [[format substringFromIndex:nextIndex] substringToIndex:2];
if ([workingSubstring isEqualToString:@"dd"])
{
dd = ++currentOrder;
nextIndex += 3;
}
else if ([workingSubstring isEqualToString:@"MM"])
{
MM = ++currentOrder;
nextIndex += 3;
}
else if ([workingSubstring isEqualToString:@"yy"])
{
yyyy = ++currentOrder;
nextIndex += 5;
}
}
NSLog(@"dd: %d, MM: %d, yyyy: %d", dd, MM, yyyy);
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



