تحويل NSString إلى قطع NSString التي لها تنسيق تاريخ
-
20-09-2019 - |
سؤال
قد يكون هذا بسيطًا. لقد بحثت ، لم يتم العثور عليها بعد.
كيف يمكنني تحويل nsstring @"20100216190205" إلى nsstring من التنسيق @"yyyy-mm-dd hh: mm: ss".
IE: @"2010-02-16 19:02:05"
تعديل:أردت تجنب استخدام NSDateFormatter ليكون أكثر عاما ، لحالات أخرى.
المحلول
بحتة كتمرين في رمز الكتابة:
NSString* digits = @"20100216190205"; // this is probably a parameter somewhere
NSMutableString* formatted = [digits mutableCopy];
[formatted insertString:@":" atIndex:12];
[formatted insertString:@":" atIndex:10];
[formatted insertString:@" " atIndex:8];
[formatted insertString:@"-" atIndex:6];
[formatted insertString:@"-" atIndex:4];
NSLog(@"original string: %@ -> formatted: %@", digits, formatted);
لكني أوافق على ذلك: اذهب بسهولة على نفسك ، واستخدم موعدًا لهذا الغرض.
نصائح أخرى
يمكنك استخراج كل فرعية وتحويلها إلى أعداد صحيحة (-intValue
)، ثم استخدام NSDateComponents
لتحويلها إلى تاريخ. وهو أكثر إزعاجًا من استخدام NSDateFormatter.
في حالتك ، يجب ضبط تنسيق NSDOthformatter yyyyMMddHHmmss
قبل الاتصال -dateFromString:
, ، بمعنى آخر
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....
ستحتاج إلى ضبط الخاص بك formatter
تنسيق ل yyyymmddhhmmss لتحليل السلسلة التي لديك في مثالك. ستحتاج إما إلى إنشاء تنسيق جديد أو تعديل تنسيق التنسيق الأصلي لدمجذ أكثر جاذبية بصريًا تريده (@"yyyy-MM-dd HH:mm:ss"
).