7

我需要显示当前的日期和时间。

我用过 ;

NSDate *currentDateNTime        = [NSDate date];

我想要当前的日期和时间(应该显示系统时间而不是 GMT 时间)。输出应该是NSDate格式而不是NSString.

例如;

    NSDate *currentDateNTime        = [NSDate date];
// Do the processing....

NSDate *nowDateAndTime = .....; // Output should be a NSDate and not a NSString
4

5 回答 5

9

由于所有 NSDate 都是 GMT 参考的,你可能想要这个:(不要忘记 nowDate 不会是实际的当前系统日期时间,但它是“移位”的,所以如果你将使用 NSDateFormatter 生成 NSString,你会看到日期错误)

NSDate* currentDate = [NSDate date];
NSTimeZone* currentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* nowTimeZone = [NSTimeZone systemTimeZone];

NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:currentDate];
NSInteger nowGMTOffset = [nowTimeZone secondsFromGMTForDate:currentDate];

NSTimeInterval interval = nowGMTOffset - currentGMTOffset;
NSDate* nowDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
于 2012-05-28T16:43:45.200 回答
5

世界各地的每一刻都是同一时刻——它只是表示为不同时区的不同时钟时间。因此,您不能将日期更改为代表您所在时区时间的其他日期;您必须使用NSDateFormatter您所在的时区提供的一个。生成的字符串是以您所在位置的时钟时间表示的时间点。

在 GMT 中进行所有需要的计算,并使用格式化程序进行显示。

于 2012-05-28T17:03:17.297 回答
1

值得一读 [NSDate date] 是否返回本地日期和时间?

对于最近来此的人来说,一些有用的资源:

如果您对日期和时间做任何认真的事情,请阅读 Apple 日期和时间编程指南。 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html#//apple_ref/doc/uid/10000039i?language=objc

NSDate 上具有许多实用程序的有用类别确实允许根据现有日期生成 ~new~ 日期。 https://github.com/erica/NSDate-Extensions

还有一个快速版本的类别 https://github.com/erica/SwiftDates

于 2018-01-09T14:51:27.800 回答
0

你需要一个 NSDateFormatter 并调用 stringFromDate 这个方法来获取你的日期字符串。

NSDateFormatter *dateformater = [[NSDateFormatter alloc] init];
[dateformater setDateFormat:@"yyyyMMdd,HH:mm"];
NSString *str = [dateformater stringFromDate: currentDateNTime];
于 2012-05-28T16:39:23.050 回答
-1

使用这个方法

-(NSDate *)convertDateToDate:(NSDate *) date
{
    NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
    NSDate *nowDate = [[[NSDate alloc] init] autorelease];
    [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    [formatter setDateFormat:@"yyyy-MM-d H:m:s"];
    NSString * strdate = [formatter stringFromDate:date];
    nowDate = [formatter dateFromString:strdate];
    return nowDate;
}

这可能会返回你想要的。

我希望你这可以帮助你。

于 2012-05-28T16:57:17.407 回答