在Android和IOS中手动设置系统时钟拧紧UTC

时间:2016-01-21 15:41:53

标签: android ios datetime timezone offset

上一篇文章的延续: 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不应该改变。是检查某个时间服务器的日期的唯一选择 - 这不是故障安全。

0 个答案:

没有答案