2011-07-17 15 views
25

Jak przekonwertować następującą datę "Niedz 17 lipca 07:48:34 +0000 2011" do następującego formatu "2011-07-17 07:48:34"?Konwersja formatu daty do celu C

Użyłem NSDateFormatter jak pokazano poniżej, ale nie działało. W rezultacie daje zero.

NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init]; 
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
[objDateFormatter dateFromString:sDate]; 
+0

Czy możesz dodać czy używałeś z NSDateFormatter? –

+0

[NSDate format w iOS 4.1] (http://stackoverflow.com/questions/3716384/nsdate-format-in-ios-4-1) –

+1

możliwy duplikat [iPhone: Konwertuj ciąg daty na względny znacznik czasu] (http://stackoverflow.com/questions/902950/iphone-convert-date-string-to-a-relative-time-stamp) – Ayaz

Odpowiedz

2

Jeśli sDate to ciąg znaków, który jest w formacie „Słońce 17 lipca 07:48:34 +0000 2011”, trzeba przekonwertować do NSDate. Następnie możesz użyć drugiego pliku NSDateFormatter, aby przekształcić tę datę w żądany format "rrrr-MM-dd GG: mm: ss".

Jeśli chcesz dowiedzieć się ciąg potrzebny do konwersji, ta strona ma wielką odniesienia: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

przykład „Słońce 17 lipca 07:48:34 +0000 2011” może być analizowana z

[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"]; 

jako trochę porad, nietypowych terminów jak „Sie” (powinno być lipca) może sprawić problemy tutaj. Szybsza jest konwersja potrzebnych części w zwykłym C, z strftime(). Zobacz odniesienia: http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm

można następnie przekonwertować uniksowego znacznika czasu z powrotem w NSDate z

[NSDate dateWithTimeIntervalSince1970:] 

Korzystanie C do data/czas parsowania jest zwykle do 10x szybciej. NSDateFormatter to powolny pies.

+0

ładny link z wzorami formatów daty - bardzo pomocny – gbk

59

Masz swój format daty niewłaściwy dla stylu Data jesteś przechodzącą w Oto dokument wyjaśniający różne modyfikatory. Date Format Patterns

do analizowania datę „Słońce 17 lipca 07:48:34 + 0000 2011" , którą trzeba Format tak:

[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

Aby dostać ją w następującym formacie: "2011-07-17 07:48:34", tutaj jest pełny kod:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 
NSDate *date = [dateFormatter dateFromString:sDate]; 

// Convert to new Date Format 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSString *newDate = [dateFormatter stringFromDate:date]; 
+0

thanx zadziałało :) – farajnew

+0

Problem. .. działa dobrze na symulatorze, ale nie działa na prawdziwym urządzeniu? – farajnew

+0

Jaki masz problem z urządzeniem? Czy daje błąd? Wypadek? Musisz opisać swój problem ... –