NSDateFormatter和yyyy-MM-dd

cli*_*fin 12 iphone cocoa-touch objective-c nsdate nsdateformatter

我正在尝试以"2/22/11"格式获取NSString日期并将其转换为以下格式:2011-02-22

这是我的代码:

NSDate *dateTemp = [[NSDate alloc] init];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
dateTemp = [dateFormat dateFromString:newInvoice.date];
newInvoice.date = [dateFormat stringFromDate:dateTemp];
Run Code Online (Sandbox Code Playgroud)

newInvoice.date以NSString开头等于"2/22/11".dateTemp最终没有.newInvoice.date最终也是NIL.

我不能为我的生活找出原因.

Ami*_*ngh 27

您遇到此问题,因为您的日期格式化程序不正确.假设您的newInvoice.date变量存储"11:02:23"您的dateFormatter应该是@"yy:MM:dd"并且如果您的newInvoice.date变量存储"2/22/11"然后你的dateFormatter应该是@"MM/dd/yy"

NSDate *dateTemp = [[NSDate alloc] init];
NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc] init];
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init];

[dateFormat1 setDateFormat:@"MM/dd/yy"];
[dateFormat2 setDateFormat:@"yyyy-MM-dd"];

dateTemp = [dateFormat1 dateFromString:newInvoice.date];
newInvoice.date = [dateFormat2 stringFromDate:dateTemp];
Run Code Online (Sandbox Code Playgroud)

两种格式都应该根据您的要求来获得正确的结果

  • 即,你需要2个格式化程序:一个用于输入,一个用于输出. (2认同)