NSDate和NSString之间的相互转化
One quick question is about how to convert NSString to NSDate in format "2012-07-21T01:59:59.234Z". After google much, finally I got answer like below:
+(NSDate*) stringToDate:(NSString *)string { static NSDateFormatter *formatter = nil; if (!formatter) { formatter = [[NSDateFormatter alloc] init]; //we have NSTimeZone setting [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; [formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'"]; } return [formatter dateFromString:string];}
If you don't make formatter as static, please remember to release it after use it.
NSDate to NSString, we need NSDateFormatter:
- (NSString*) dateToString:(NSDate *)date { static NSDateFormatter *formatter = nil; if (!formatter) { formatter = [[NSDateFormatter alloc] init]; [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; formatter.dateStyle = NSDateFormatterShortStyle; formatter.timeStyle = NSDateFormatterShortStyle; } return [formatter stringFromDate:date];}
Below is from http://www.deanoj.co.uk/ios-development/nsdateformatter-formatting-strings-reference/
NSDateFormatter formatting strings reference
a: AM/PMA: 0~86399999 (Millisecond of Day)c/cc: 1~7 (Day of Week)ccc: Sun/Mon/Tue/Wed/Thu/Fri/Satcccc: Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturdayd: 1~31 (0 padded Day of Month)D: 1~366 (0 padded Day of Year)e: 1~7 (0 padded Day of Week)E~EEE: Sun/Mon/Tue/Wed/Thu/Fri/SatEEEE: Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/SaturdayF: 1~5 (0 padded Week of Month, first day of week = Monday)g: Julian Day Number (number of days since 4713 BC January 1)G~GGG: BC/AD (Era Designator Abbreviated)GGGG: Before Christ/Anno Dominih: 1~12 (0 padded Hour (12hr))H: 0~23 (0 padded Hour (24hr))k: 1~24 (0 padded Hour (24hr)K: 0~11 (0 padded Hour (12hr))L/LL: 1~12 (0 padded Month)LLL: Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/DecLLLL: January/February/March/April/May/June/July/August/September/October/November/Decemberm: 0~59 (0 padded Minute)M/MM: 1~12 (0 padded Month)MMM: Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/DecMMMM: January/February/March/April/May/June/July/August/September/October/November/Decemberq/qq: 1~4 (0 padded Quarter)qqq: Q1/Q2/Q3/Q4qqqq: 1st quarter/2nd quarter/3rd quarter/4th quarterQ/QQ: 1~4 (0 padded Quarter)QQQ: Q1/Q2/Q3/Q4QQQQ: 1st quarter/2nd quarter/3rd quarter/4th quarters: 0~59 (0 padded Second)S: (rounded Sub-Second)u: (0 padded Year)v~vvv: (General GMT Timezone Abbreviation)vvvv: (General GMT Timezone Name)w: 1~53 (0 padded Week of Year, 1st day of week = Sunday, NB: 1st week of year starts from the last Sunday of last year)W: 1~5 (0 padded Week of Month, 1st day of week = Sunday)y/yyyy: (Full Year)yy/yyy: (2 Digits Year)Y/YYYY: (Full Year, starting from the Sunday of the 1st week of year)YY/YYY: (2 Digits Year, starting from the Sunday of the 1st week of year)z~zzz: (Specific GMT Timezone Abbreviation)zzzz: (Specific GMT Timezone Name)Z: +0000 (RFC 822 Timezone)