使用本地时区从服务器应用 NSDate get NSDate
Applying NSDate from server with localtimezone get NSDate
我正在 return 从我的服务器获取 NSDate(运行 GMT+2)
我正在用服务器日期和设备当前日期计算一些东西。
问题(很明显)是当设备 运行 与我的服务器处于不同时区时。
我如何应用服务器的 NSDate 并将其更改为 return 用于我计算的当前设备 NSDate 对于每个时区都是准确的。
我只需要一个函数来获取我的服务器 NSDate 与我服务器的时区 (gmt+2) 并且 return 正确的设备 NSDate。
希望有人能帮助我
服务器 returns Ticks(运行 在 c# 上)并使用此代码
操作到 nsdate
double tickFactor = 10000000;
double ticksDoubleValue = [ticks doubleValue];
double seconds = ((ticksDoubleValue - 621355968000000000)/ tickFactor);
NSDate *returnDate = [NSDate dateWithTimeIntervalSince1970:seconds];
return returnDate;
NSDate
class 存储绝对时间。为了促进这一点,它代表 UTC 时间,这是时区不可知的。无论您如何创建 NSDate,都假定时间为 UTC。即使您使用 NSDateFormatter
到 "read" 字符串中的日期,它也只是在创建 NSDate
.
之前代表您进行数学运算
如果您的时间表示包含时区偏移,则在进行转换时需要考虑到这一点。如上所述,给定一个正确的格式字符串,NSDateFormatter
将为您完成。如果您的表示是数字(通常是某个日期的秒数),则需要添加或减去时区偏移量。偏移量为负则加,为正则减。
要调整以服务器本地时间提供的服务器日期,请根据服务器的时区进行调整。对于 GMT+2,减去 3600 * 2
(每小时秒数 * 偏移量)。这给出了 UTC 的秒数。当你使用 `[NSDate dateWithTimeIntervalSince1970:] 创建 NSDate 时。这将是预期的时间。
我正在 return 从我的服务器获取 NSDate(运行 GMT+2) 我正在用服务器日期和设备当前日期计算一些东西。
问题(很明显)是当设备 运行 与我的服务器处于不同时区时。
我如何应用服务器的 NSDate 并将其更改为 return 用于我计算的当前设备 NSDate 对于每个时区都是准确的。
我只需要一个函数来获取我的服务器 NSDate 与我服务器的时区 (gmt+2) 并且 return 正确的设备 NSDate。
希望有人能帮助我
服务器 returns Ticks(运行 在 c# 上)并使用此代码
操作到 nsdatedouble tickFactor = 10000000;
double ticksDoubleValue = [ticks doubleValue];
double seconds = ((ticksDoubleValue - 621355968000000000)/ tickFactor);
NSDate *returnDate = [NSDate dateWithTimeIntervalSince1970:seconds];
return returnDate;
NSDate
class 存储绝对时间。为了促进这一点,它代表 UTC 时间,这是时区不可知的。无论您如何创建 NSDate,都假定时间为 UTC。即使您使用 NSDateFormatter
到 "read" 字符串中的日期,它也只是在创建 NSDate
.
如果您的时间表示包含时区偏移,则在进行转换时需要考虑到这一点。如上所述,给定一个正确的格式字符串,NSDateFormatter
将为您完成。如果您的表示是数字(通常是某个日期的秒数),则需要添加或减去时区偏移量。偏移量为负则加,为正则减。
要调整以服务器本地时间提供的服务器日期,请根据服务器的时区进行调整。对于 GMT+2,减去 3600 * 2
(每小时秒数 * 偏移量)。这给出了 UTC 的秒数。当你使用 `[NSDate dateWithTimeIntervalSince1970:] 创建 NSDate 时。这将是预期的时间。