【问题标题】:How to get local date and time?如何获取本地日期和时间?
【发布时间】:2013-05-24 12:35:16
【问题描述】:

我正在使用 NSDate 获取当前时间和日期,但它给出的日期和时间基于 GMT。请问有谁知道如何获取当地时间?

提前致谢!

【问题讨论】:

标签: objective-c nsdate


【解决方案1】:

NSDate 不知道时区。它始终将日期存储为 GMT 中的绝对时刻。

使用 NSDateFormatter 获取本地(或任何其他时区)表示。

查看相关编程指南:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

【讨论】:

  • 如何获取当前语言环境?你能举个例子吗?
  • 如果你使用 NSDateFormatter,它会默认自动使用当前的语言环境。如果你需要知道语言环境,你可以使用 [NSLocale currentLocale]
  • 抱歉误会,我想获取本地当前时间,但我需要 NSDate 格式,而不是 NSString,所以我也不能使用 NSDateFormatter。我也不能指定时区,因为它应该根据位置自动转换。
  • 你能解释一下你为什么需要这个吗?正如我所说,NSDate 预计将在格林威治标准时间。你正在与框架作斗争。这听起来像是设计缺陷(例如将模型和视图混为一谈)。
  • 因为我想在不基于 GMT 执行操作时在数据库中插入相同的时间。
【解决方案2】:
[dateFormatter setTimeZone:systemTimeZone];

通过上述方法使用日期格式化程序设置日期的时区。它会起作用的。将日期转换为字符串,设置格式和时区并转换回日期。

【讨论】:

    【解决方案3】:

    您好,我是从另一个网站找到的

    NSDate* sourceDate = [NSDate date];
    
    NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
    
    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
    
    NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
    

    该网站的链接是here

    【讨论】:

    • 但是当差异在“-”时这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多