我在用

NSDate *date = [NSDate date];

获取日期,但我得到的日期要2小时。

===============>>#1 票数:24 已采纳

NSDate对象没有时区。 它们代表时间上的绝对时刻。 但是,当您要求提供一个description (例如通过使用NSLog()打印),它必须选择一个时区。 最合理的“默认”选择是GMT。 如果您自己不在格林尼治标准时间(GMT),则日期似乎不正确(以您自己的抵销金额为准)。

您应该始终使用NSDateFormatter创建显示字符串。 格式化程序的时区应设置为您的时区,这是默认设置。

===============>>#2 票数:2

您可以像这样纠正日期:

NSDate * dateGMT = [NSDate date];
NSTimeInterval secondsFromGMT = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate * correctDate = [dateGMT dateByAddingTimeInterval:secondsFromGMT];

===============>>#3 票数:0

-(NSDate *)getDateInCurrentSystemTimeZone
{
    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];
    return destinationDate;
}

  ask by MTA translate from so

未解决问题?本站智能推荐:

3回复

为什么[NSDate日期]返回的时间与我当前时间不同?

大家好我在印度。我使用以下代码来获取当前日期。 它显示“2011-01-20 06:51:35 +0000”,但实际时间是“2011-01-20 12:21:35 +0000”。请告诉我如何获取当前日期。 提前致谢
1回复

NSDate表示在不同的时区,即本地时区(GMT-400)到PST

我知道如何使用NSTimeZone来获取另一个时区中当前时间的偏移量。 NSDate总是相对于GMT返回,那么如何使用正确的时区信息派生字符串? 也就是说,我将当前时间(在美国东部时间)中使用,并使用NSTimeZone最后减去表示PST时间所需的3小时。 但我所做的就是从相对于我的时区仍
3回复

将[NSDate date]转换为本地化的UTC日期字符串

我有一个NSDate对象,该对象正在发送到我们使用的API。 我们的应用程序在世界范围内使用,因此API希望日期使用UTC,例如: 但是,该日期需要考虑时区偏移,因为API /服务器没有为我们执行此操作。 如果不这样做,则在服务器上查看日期时,日期是不正确的。 我正在执行以下操
2回复

NSDate返回GMT时间

我住在印度,格林尼治标准时间+5.30小时。 当我打印系统时间时,它将显示当前时间。 但是,当我使用此代码时,会使用GMT时间! 代码示例: 现在系统时间是11:34 PM,但控制台会打印出: 2013-06-05 23:35:02.577 prog1 [1601:303
3回复

[NSDate date]的时区是什么?

我对[NSDate date]中的时区如何工作有疑问。 在我的应用程序中,我正在进行PUT Web服务调用,必须以UTC发送日期(转换为毫秒)。 我假设[NSDate date]将位于本地时区(CST),并尝试将其转换为UTC,但是两个NSlog都打印完全相同的值。 [NSDat
2回复

比较处于不同时区的两个NSDate

我有两个约会,一个在UTC时区,另一个在新西兰。 我需要比较一个日期是否大于另一个日期。 我该怎么做呢? 我是否需要先将它们转换为相同的时区?
1回复

NSDatePicker正在更改系统时区的时间。 我想停止更改日期选择器的日期值

我的问题是,当我使用系统偏好设置更改时区时, NSDatePicker日期值也正在更改。 即使时区发生变化,如何防止这种情况并保持原样? 请建议我如何实现这一目标。
1回复

NSDateComponents将UTC日期转换为本地时区,弄乱了“今天”的nsdate比较

我正在尝试使用NSDateComponents来测试动态日期是否发生在“今天”。 我用它来提取年/月/日,然后比较两个NSDate的值。 从理论上讲,这应该起作用。 我在东海岸,所以EST,UTC的时间是-5。 当前实际时间:美国东部标准时间12:40:53 这是UTC中正确的
2回复

更改小时后奇怪的NSDate

我想更改NSDate中的小时数。 我做了这样的事情: 其中self.dateForNewEvent = 2018-07-09 07:24:13 +0000和hour.intValue = 5并且我期望日期= 2018-07-09 05:00:00 + 0000但我得到了2018-07-
2回复

将字符串转换为日期会浪费一个小时

我正在尝试将字符串格式的日期转换为NSDate,但是结果似乎从传递的时间中扣除了一个小时。为什么会有这样的想法? 这是测试电话: 我得到输出(这是我指定为参数的时间之前一个小时): 我如何更改时区的任何帮助将不胜感激。