تنسيق NSDate إلى أساليب معينة لكل من السنة والشهر واليوم والساعة والدقيقة والثواني

StackOverflow https://stackoverflow.com/questions/936969

سؤال

أحتاج أساسا للحصول على التاريخ والوقت الحاليين بشكل منفصل، منسق ك:

2009-04-26 
11:06:54

الرمز أدناه، من سؤال آخر على نفس الموضوع، يولد

الآن: | 2009-06-01 23:18:23 +0100 | Batestring: | 01 يونيو، 2009 23: 18 | تحليل: | 2009-06-01 23:18:00 +0100 |

هذا تقريبا ما أبحث عنه، لكنني أريد فصل اليوم والوقت.

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
"now:        |%@| \n"
"dateString: |%@| \n"
"parsed:     |%@|", now, dateString, parsed);
هل كانت مفيدة؟

المحلول

سلاسل شكل فون في تنسيق يونيكود. وبعد وراء الرابط هو جدول يشرح ما تعني كل الحروف أعلاه حتى تتمكن من بناء بلدك.

وبالطبع لا تنسى إطلاق ملاحظات تاريخك عند الانتهاء منهم. تسرب الكود أعلاه format, now, ، و inFormat.

نصائح أخرى

هذا ما استخدمته:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];

NSLog(@"\n"
      "theDate: |%@| \n"
      "theTime: |%@| \n"
      , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];

يمكنك استخدام هذه الطريقة فقط تمرير تاريخك

-(NSString *)getDateFromString:(NSString *)string
{

    NSString * dateString = [NSString stringWithFormat: @"%@",string];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"your current date format"];
    NSDate* myDate = [dateFormatter dateFromString:dateString];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"your desired format"];
    NSString *stringFromDate = [formatter stringFromDate:myDate];

    NSLog(@"%@", stringFromDate);
    return stringFromDate;
}
    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
    [dateformat setDateFormat:@"Your Date Format"];

قم بتعيين التنسيق للعودة هو ....

yyyy-MM-dd إرجاع 2015-12-17 تاريخ

yyyy-MMM-dd إرجاع 2015-Dec-17 تاريخ

yy-MM-dd إرجاع 15-12-17 تاريخ

dd-MM-yy إرجاع 17-12-15 تاريخ

dd-MM-yyyy إرجاع 17-12-2015 تاريخ

yyyy-MMM-dd HH:mm:ss إرجاع 2015-Dec-17 08:07:13 التاريخ و الوقت

yyyy-MMM-dd HH:mm إرجاع 2015-Dec-17 08:07 التاريخ و الوقت

لمزيد من التفاصيل تنسيق البيانات والتنسيق انقر الآن.

شكرا لك.....

لا شيء جديد ولكن لا يزال يرغب في مشاركة طريقتي:

+(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *)
destFormat scrString:(NSString *) srcString
{
    NSString *dateString = srcString;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[dateFormatter setDateFormat:@"MM-dd-yyyy"];
    [dateFormatter setDateFormat:srcFormat];
    NSDate *date = [dateFormatter dateFromString:dateString];

    // Convert date object into desired format
    //[dateFormatter setDateFormat:@"yyyy-MM-dd"];
    [dateFormatter setDateFormat:destFormat];
    NSString *newDateString = [dateFormatter stringFromDate:date];
    return newDateString;
}

لسريع

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;

سويفت 3.

extension Date {

    func toString(template: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current)
        return formatter.string(from: self)
    }

}

الاستعمال

let now = Date()
let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9
let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09
let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09

العب مع القالب لمطابقة احتياجاتك. أمثلة و Doc. هنا لمساعدتك في بناء القالب الذي تحتاجه.

ملحوظة

قد ترغب في التخزين المؤقت الخاص بك DateFormatter إذا كنت تخطط لاستخدامها في TableView على سبيل المثال. لإعطاء فكرة، استغرقت لي أكثر من 1000 التواريخ 0.5 ثانية باستخدام ما سبق toString(template: String) وظيفة، مقارنة 0.05 ثانية استخدام myFormatter.string(from: Date).

NSDate *date         = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"]
NSString *dateString  = [df stringFromDate:date];
[df setDateFormat:@"hh:mm:ss"];
NSString *hoursString = [df stringFromDate:date];

هذا هو، لقد حصلت على كل ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top