首页 > 解决方案 > 日历在不应该使用夏令时的情况下使用

问题描述

我正在制作的一个程序是将十六进制值转换为十进制。十进制值表示自 2010 年 1 月 1 日以来的时间(以秒为单位)。我正在使用日历方法将秒数添加到日期以获得最终日期/时间。当我调用 .useDaylightTime() 它返回 false 但我得到的值是它是否使用 DST。我忽略了什么吗?

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import java.util.TimeZone;

public class timeSince {

    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String hex = input.nextLine();
        TimeZone zone = TimeZone.getTimeZone("EST");
        System.out.println(zone.useDaylightTime());
        Calendar cal = Calendar.getInstance(zone);
        cal.set(2010, 0, 1, 0, 0, 0);
        cal.add(Calendar.SECOND, Integer.parseInt(hex,16));
        Date newDate = cal.getTime();
        System.out.println(dateFormat.format(newDate));

    }

}

标签: java

解决方案


用于格式化的时区在 DateFormat 上设置。

dateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
System.out.println(dateFormat.format(newDate));

推荐阅读