上一篇文章的延续: UTC String to Date and UTC Time Calculations
在手机上设置时间+5小时的手机上获取UTC时间,同时在Android和IOS中将UTC更改为5小时。这是为什么?
IOS:
+ (NSString*) getNowUtc
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
// or
//[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *now = [[NSDate alloc] init];
return [formatter stringFromDate:now];
}
+ (NSDate*) stringToDateInUtc:(NSString*)str
{
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
// or
//[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
return [formatter dateFromString:str];
}
+ (NSDate*) getNowUtcAsDate
{
return [TimeHelper stringToDateInUtc:[TimeHelper getNowUtc]];
}
机器人:
public static Date getNowUtc()
{
return stringToDate(dateToString(new Date()));
}
public static Date stringToDate(String dateString)
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
TimeZone timeZone = TimeZone.getTimeZone("GMT");
format.setTimeZone(timeZone);
try
{
Date date = format.parse(dateString);
return date;
}
catch (ParseException ex) {}
return null;
}
我已经查看了Android和IOS的 DST 。在IOS上,这些值为0,在Android上,如果将带有UTC TimeZone的日期转换为本地时区(此处为+ 1 GMT ......),则返回3600,但是在系统时钟上添加+5小时会导致基于时间的所有计算中断。在Android上, getRawOffset()和 getOffset() - 方法......
如果手动更改系统时钟或自动更新系统时钟,如何获得100%特定的UTC NSDate / Date? UTC不应该改变。是检查某个时间服务器的日期的唯一选择 - 这不是故障安全。