如何在不使用NSDate
的情况下将NSString
转换为NSDateFormatter
?
为了您的参考,我的代码如下,我将它用于我的提醒应用程序。
非常感谢你。
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];
答案 0 :(得分:4)
根据你的问题,你可以通过这种方式得到它 -
NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);
NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);
您还可以使用NSString
获取NSDateFormatter
为什么您会害怕使用它?
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
NSString *stringDate = [dateFormatter stringFromDate:pickerDate];
NSLog(@"%@", stringDate);
答案 1 :(得分:3)
伙计们,请大声读出documentation for NSDate,然后大声喊叫!
描述
返回接收者的字符串表示。
- (NSString *)description
返回值
接收者的字符串表示。
讨论
不保证代表性保持不变 不同版本的操作系统。要格式化日期,您 应该使用日期格式化程序对象(请参阅NSDateFormatter和 数据格式指南)
还应该理解,当您执行[NSString stringWithFormat:@"%@", something]
时,会发生%@
格式后面的代码调用description
的{{1}}方法。对于NSString对象,something
方法被定义为可靠地返回字符串值,但是对于所有其他Cocoa类description
仅用于诊断用途。
NSDateFormatter的另一个替代方案(除了向后的NSCalendar方案)是自己破解日期 - 不是那么困难,真的,至少是一个有趣的练习。
[如果你想尝试自己破解日期,请使用description
,它返回一个NSTimeInterval对象(实际上只是一个类型timeIntervalSinceReferenceDate
),表示自2001年1月1日以来的秒数(之前的日期为负数) )。该值为UTC,因此如果您想要本地时间,则添加/减去任何时区偏移,然后开始使用模运算。您可以轻松地将其设置为毫秒,秒,分钟和小时,以及“自2001年1月1日以来的天数”值。从那里转换到日/月/年需要思考,但并不是非常困难,特别是如果你把自己限制在1900年以后的日期。]
答案 2 :(得分:1)
我正在使用此功能并仅以字符串保存到数据库中。
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);
答案 3 :(得分:0)
根据你的问题,你可以通过这种方式得到它 -
NSString *stringDate = [NSString stringWithFormat:@"%@",pickerDate];
NSLog(@"%@",stringDate);
NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);
答案 4 :(得分:0)
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);