【问题标题】:Creating an NSCalendar to be PST timezone创建一个 NSCalendar 作为 PST 时区
【发布时间】:2014-09-24 08:13:30
【问题描述】:

创建 NSCalendar 以使其时区为 PST 的方法是什么?

如果 iPhone 在 LA (PST) 或 NYC (EST),情况仍然如此吗?代码会根据设备的位置/时区进行调整吗?

【问题讨论】:

    标签: ios iphone ios7 nsdate nscalendar


    【解决方案1】:

    首先,如果您使用currentCalendar 获取日历,那么它将针对用户的当前时区,因此如果您明确指定日历的时区,那么它将具有该时区,例如:

    NSCalendar *cal = [NSCalendar currentCalendar];
    NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"US/Pacific"];
    [cal setTimeZone:zone];
    

    如果您想要一个带有用户当前时区的日历,那么您可以省略时区的设置。

    如果您想要一个响应用户设置更改的日历,那么您会得到一个autoUpdatingCurrentCalendar

    NSCalendar *cal = [NSCalendar autoUpdatingCurrentCalendar];
    

    我不确定“如果 iphone 位于不同的时区”是什么意思。您问如何获取特定时区的日历;设置时区后,它会保留在该日历实例中。如果您希望日历报告用户的时区,您可以使用 currentCalendarautoUpdatingCurrentCalendar 并且不要指定时区。

    【讨论】:

    • 因此,如果一个人下午 2:05 在洛杉矶,另一个人下午 5:05 在纽约,并且我将日历设置为 PST,那么当我写入服务器时,两个时间都是 2:下午 5 点对吗?
    • 问题是什么你在写服务器。一个时间点(NSDate)是同一时间点,无论您最终决定在哪个时区表示它。如果将其转换为 字符串(例如,使用 NSDateFormatter,那么此时时区就会生效)。
    • 我把它变成一个字符串(代码),以 4 小时为增量跟踪一组事物
    • 那么,如果有人在 LA 而 someelese 在 NYC,我如何让字符串位于服务器上的同一时区?
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多