如何获取当前日期
How to Get Current Date
我正在使用以下代码获取当前日期:
-(NSDate*) timeStampDate {
NSDate* currentDate = [NSDate date];
return [NSDate dateWithTimeInterval:
[[NSTimeZone defaultTimeZone] secondsFromGMTForDate: currentDate]
sinceDate: currentDate];
}
当我在保存后立即显示此日期时,使用 category 将其转换为简单的英语,它给了我“5 小时前”。当我在纽约时,这对我来说表明日期确实是格林威治日期。谁能向我解释一下上面的代码到底在做什么。
我不明白为什么这个结果看起来不合逻辑 - 你现在要求从格林威治标准时间开始你所在的时区,这大约是你说的五个小时。如果日期是 "older",秒数会更大。
所有 NSDates 的创建和运行都独立于任何特定时区,但这并不重要。
您正在获取当前日期:[NSDate date]
然后您将获得默认时区和该日期 GMT 之间的秒数:[[NSTimeZone defaultTimeZone] secondsFromGMTForDate: currentDate]
那么您正在计算一个新日期,即当前日期 + 这些秒数。间隔为负,因此您计算的是过去的日期:[NSDate dateWithTimerInterval:-seconds sinceDate:currentDate
由于你的间隔是 -5 小时,从现在减去,那么你计算出的新日期确实是“5 小时前”。
如果您的目标是获得 GMT 时间,我建议使用日期格式化程序,如 highest-voted 此处的答案所示:NSDate - Convert Date to GMT
我正在使用以下代码获取当前日期:
-(NSDate*) timeStampDate {
NSDate* currentDate = [NSDate date];
return [NSDate dateWithTimeInterval:
[[NSTimeZone defaultTimeZone] secondsFromGMTForDate: currentDate]
sinceDate: currentDate];
}
当我在保存后立即显示此日期时,使用 category 将其转换为简单的英语,它给了我“5 小时前”。当我在纽约时,这对我来说表明日期确实是格林威治日期。谁能向我解释一下上面的代码到底在做什么。
我不明白为什么这个结果看起来不合逻辑 - 你现在要求从格林威治标准时间开始你所在的时区,这大约是你说的五个小时。如果日期是 "older",秒数会更大。
所有 NSDates 的创建和运行都独立于任何特定时区,但这并不重要。
您正在获取当前日期:[NSDate date]
然后您将获得默认时区和该日期 GMT 之间的秒数:[[NSTimeZone defaultTimeZone] secondsFromGMTForDate: currentDate]
那么您正在计算一个新日期,即当前日期 + 这些秒数。间隔为负,因此您计算的是过去的日期:[NSDate dateWithTimerInterval:-seconds sinceDate:currentDate
由于你的间隔是 -5 小时,从现在减去,那么你计算出的新日期确实是“5 小时前”。
如果您的目标是获得 GMT 时间,我建议使用日期格式化程序,如 highest-voted 此处的答案所示:NSDate - Convert Date to GMT