繁体   English   中英

不使用NSDateFormatter将Date转换为String

[英]Convert Date into String without Using NSDateFormatter

如何在不使用NSDateFormatter情况下将NSDate转换为NSString

为了您的参考,我的代码如下,我将它用于我的提醒应用程序。

非常感谢。

 NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

// Get the current date
NSDate *pickerDate = [self->dp date];



// Break the date up into components
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit )
                                               fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
                                               fromDate:pickerDate];

// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
// Notification will fire in one minute
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
[dateComps release];

根据你的问题,你可以这样得到它 -

NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);

NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);

您也可以使用NSDateFormatter获取NSString ,为什么您会害怕使用它?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];

NSString *stringDate = [dateFormatter stringFromDate:pickerDate];  
NSLog(@"%@", stringDate);

伙计们,阅读NSDate文档 ,大声喊叫!

描述

返回接收器的字符串表示形式。

- (NSString *)description

回报价值

接收器的字符串表示。

讨论

不保证表示在操作系统的不同版本中保持不变。 要格式化日期,您应该使用日期格式化程序对象(请参阅NSDateFormatter和数据格式指南)

还应该理解,当你执行[NSString stringWithFormat:@"%@", something] ,会发生的[NSString stringWithFormat:@"%@", something]%@ formatting后面的代码调用somethingdescription方法。 对于NSString对象, description方法被定义为可靠地返回字符串值,但对于所有其他Cocoa类, description仅供诊断使用。

NSDateFormatter的另一个替代方案(除了向后的NSCalendar方案)是自己破解日期 - 不是那么困难,真的,至少是一个有趣的练习。

[如果你想尝试自己破解日期,请使用timeIntervalSinceReferenceDate ,它返回一个NSTimeInterval对象(实际上只是一个类型转换double精度),表示自2001年1月1日以来的秒数(之前的日期为负)。 该值为UTC,因此如果您想要本地时间,则添加/减去任何时区偏移,然后开始使用模运算。 您可以轻松地将其设置为毫秒,秒,分钟和小时,以及“自2001年1月1日以来的天数”值。 从那里转换到日/月/年需要思考,但并不是非常困难,特别是如果你把自己限制在1900年以后的日期。

我正在使用它并仅作为字符串保存到数据库。

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];

NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];  
NSLog(@"Current time date:%@", dateString);

根据你的问题,你可以这样得到它 -

NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);

NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"Current time date:%@", dateString);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM