如何将日期字符串转换为字符串(yyyy-MM-dd)。当这样做,我得到null值? [英] How to convert the date string into string( yyyy-MM-dd). While doing so, I getting null values?
问题描述
我有数据作为customerFromDate01 Apr 2010和customerToDate2010年4月30日这是一个字符串。
I have the data as customerFromDate " 01 Apr 2010 " and customerToDate " 30 Apr 2010 " which is a string.
我想将该格式转换为字符串yyyy-MM-dd,但是当这样做时,我获得了空值。
请参阅我尝试的以下代码。
I want to convert that format into the string "yyyy-MM-dd", but when doing so I got null values. Please see the following code which I had tried.
printf("\n customerFromDate %s",[customerStatementObj.customerFromDate UTF8String]);
printf("\n customerToDate %s",[customerStatementObj.customerToDate UTF8String]);
/*
prints as the following
customerFromDate 01 Apr 2010
customerToDate 30 Apr 2010
*/
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *fromDate=[[NSDate alloc]init];
fromDate = [dateFormatter dateFromString:customerStatementObj.customerFromDate];
printf("\n fromDate: %s",[fromDate.description UTF8String]);
NSString *fromDateString=[dateFormatter stringFromDate:fromDate];
printf("\n fromDateString: %s",[fromDateString UTF8String]);
[dateFormatter release];
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc]init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd"];
NSDate *toDate=[[NSDate alloc]init];
toDate = [dateFormatter1 dateFromString:customerStatementObj.customerToDate];
printf("\n toDate: %s",[toDate.description UTF8String]);
NSString *toDateString=[dateFormatter1 stringFromDate:toDate];
printf("\n toDateString: %s",[toDateString UTF8String]);
[dateFormatter1 release];
谢谢你,
Madan Mohan。
Thank you, Madan Mohan.
推荐答案
几个注释:
您需要两个不同的NSDateFormatter。一个指定输入日期格式,另一个指定输出日期格式。
You need two different NSDateFormatters. One that specifies the input date format, and one that specifies the output date format.
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"dd MMM yyyy"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"yyyy-MM-dd"];
您可以为 fromDate
toDate
。
其次, dateFromString:
返回已分配的自动释放的NSDate对象。您泄漏的是您手动分配的。
Secondly, dateFromString:
returns an allocated, autoreleased NSDate object. You are leaking the ones you manually allocate.
#import <Cocoa/Cocoa.h>
int main (int argc, char const *argv[])
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"dd MMM yyyy"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *fromDate = [inputFormatter dateFromString:@"01 Apr 2010"];
NSDate *toDate = [inputFormatter dateFromString:@"30 Apr 2010"];
printf("\n fromDate: %s",[fromDate.description UTF8String]);
NSString *fromDateString=[outputFormatter stringFromDate:fromDate];
printf("\n fromDateString: %s",[fromDateString UTF8String]);
printf("\n toDate: %s",[toDate.description UTF8String]);
NSString *toDateString=[outputFormatter stringFromDate:toDate];
printf("\n toDateString: %s",[toDateString UTF8String]);
[inputFormatter release];
[outputFormatter release];
[pool drain];
return 0;
}
这篇关于如何将日期字符串转换为字符串(yyyy-MM-dd)。当这样做,我得到null值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!