اي فون shortdate مع 4 أرقام العام
-
21-08-2019 - |
سؤال
وأنا واثق أنا مجرد شيء مفقود. ولكن لقد غوغليد هذا لعدة أيام في محاولة للعثور كيفية إظهار السنة 4 أرقام عند عرض أحد NSDate مع نمط من NSDateFormatterShortStyle. واسمحوا لي أن أعرف إذا كان لديك الحل. هنا هو رمز أنا أستخدم الآن.
[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease ];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
// add label for birth
UILabel *birthday = [[UILabel alloc] initWithFrame:CGRectMake(125, 10, 100, 25)];
birthday.textAlignment = UITextAlignmentRight;
birthday.tag = kLabelTag;
birthday.font = [UIFont boldSystemFontOfSize:14];
birthday.textColor = [UIColor grayColor];
birthday.text = [dateFormatter stringFromDate:p.Birth];
المحلول
إذا كنت بحاجة إلى أربع سنوات أرقام، تعيين dateformat:
باستخدام الشكل المحدد الذي تريد. الجانب السلبي هو أن تفقد التنسيق المحلية التلقائي.
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy"];
...
birthday.text = [dateFormatter stringFromDate:p.Birth];
إذا كنت تحتاج التعريب ثم هل يمكن أن محاولة تعديل تنسيق التاريخ من نمط قصيرة.
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease ];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
if ([[dateFormatter dateFormat] rangeOfString:@"yyyy"].location == NSNotFound) {
NSString *fourDigitYearFormat = [[dateFormatter dateFormat] stringByReplacingOccurrencesOfString:@"yy" withString:@"yyyy"];
[dateFormatter setDateFormat:fourDigitYearFormat];
}
تحديث مع تصحيح خطأ من ماكس ماكلويد م>
نصائح أخرى
وفقط في حالة أن شخص ما يتعثر هنا كما فعلت 'كوس كنت بحاجة شيء من هذا القبيل مع سنة 2 أرقام في تنسيق التاريخ المترجمة وهذا هو السؤال القديم حقا، وهنا هو بلدي الحل:
NSLocale* curLocale = [NSLocale currentLocale];
NSString* dateFmt = [NSDateFormatter dateFormatFromTemplate: @"ddMMyyyy"
options: 0
locale: curLocale];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:dateFmt];
NSString* retText = [formatter stringFromDate:refDate];
return retText;
وربما شخص ما يمكن استخدامه في وقت ما ...
وهذا هو موضوع قديم، ولكن لأنني كنت تحاول أن تفعل ما يريد ديف وليس ولأن أيا من الإجابات كانت صحيحة، وهنا هو الحل يمكن (في حالة أي شخص تريد من أي وقت مضى هو نفس الشيء):
NSString *FormatString = [NSDateFormatter dateFormatFromTemplate:@"MM/dd/yyyy HH:mm" options:0 locale:[NSLocale currentLocale]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:FormatString];
//Parse date here with the formater (like [formatter stringFromDate:date])
[formatter release];
وkCFDateFormatterShortStyle يحدد نمط قصيرة، عادة رقمية فقط، مثل "11/23/37" أو "03:30".
ومتوفر في ماك OS X v10.3 في وقت لاحق.
وأعلن في CFDateFormatter.h.
اقتباس فقرة>لا تظهر NSDateFormatterShortStyle لتعطيك 4 سنوات أرقام.