代码之家  ›  专栏  ›  技术社区  ›  hwrdprkns

将UTC时间转换为电话本地时间

  •  0
  • hwrdprkns  · 技术社区  · 14 年前

    这就是我现在正在使用的代码——但是它不起作用。

    "2010-08-17 19:41:13.0"
    

    我用来计算差值(以秒为单位)的代码如下:

    public static long getSecondsDifference(Timestamp timeStamp) {
        final Calendar calendar = Calendar.getInstance(Locale.getDefault());
    
        int refrenceOffset = TimeZone.getDefault().getOffset(timeStamp.getTime());
    
        final long referenceSeconds = (timeStamp.getTime() + refrenceOffset) / 1000;
        final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;
    
        final long differenceMinutes = (currentTimeSeconds - referenceSeconds) / 60;
    
        return differenceMinutes;
    }
    

    时间戳来自java.sql.timestamp 包裹。

    1 回复  |  直到 14 年前
        1
  •  1
  •   hwrdprkns    14 年前

    这和夏时制有关。因为我住的是太平洋夏令时——我必须补偿。

    public static long getSecondsDifference(Timestamp timeStamp) {
        final Calendar calendar = Calendar.getInstance(Locale.getDefault());
    
        int offset = TimeZone.getDefault().getOffset(timeStamp.getTime());
    
        if (TimeZone.getDefault().inDaylightTime(Calendar.getInstance().getTime())) {
            offset = offset - TimeZone.getDefault().getDSTSavings();
        }
        final long referenceSeconds = (timeStamp.getTime() + offset) / 1000;
    
        final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;
    
        final long differenceSeconds = (currentTimeSeconds - referenceSeconds);
    
        return differenceSeconds;
    }