[英]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);
描述
返回接收器的字符串表示形式。
- (NSString *)description
回报价值
接收器的字符串表示。
讨论
不保证表示在操作系统的不同版本中保持不变。 要格式化日期,您应该使用日期格式化程序对象(请参阅NSDateFormatter和数据格式指南)
还应该理解,当你执行[NSString stringWithFormat:@"%@", something]
,会发生的[NSString stringWithFormat:@"%@", something]
是%@
formatting后面的代码调用something
的description
方法。 对于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.