3

如何在不使用的情况下转换NSDate为?NSStringNSDateFormatter

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

太感谢了。

 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];
4

5 回答 5

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);
于 2012-10-04T11:15:58.660 回答
3

伙计们,阅读NSDate 的文档,大声哭泣吧!!!

描述

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

- (NSString *)description

返回值

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

讨论

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

还应该明白,当你这样做的时候[NSString stringWithFormat:@"%@", something],发生的是%@格式化后面的代码调用descriptionsomething. 对于 NSString 对象,该description方法被定义为可靠地返回字符串值,但对于所有其他 Cocoa 类description,仅用于诊断用途。

NSDateFormatter 的另一种替代方法(除了向后的 NSCalendar 方案)是自己破解日期——实际上并不难,至少是一个有趣的练习。

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

于 2012-10-04T11:38:51.207 回答
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);
于 2012-10-04T11:24:42.407 回答
0

根据您的问题,您可以通过这种方式获得它-

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

NSString *stringDate = [pickerDate description];
NSLog(@"%@", stringDate);
于 2016-06-27T07:15:30.127 回答
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);
于 2017-08-25T18:17:54.377 回答