How do I convert date/time from one timezone to an

2020-02-12 22:17发布

问题:

Is it possible to convert date/time from EST (America/New_York) into UTC, given string in format yyyy-MM-dd HH:mm:ss?

Example:

getUTCfromNY("2015-11-01 01:00:00", "NY");

should output:

GMT Time: 2015-11-01 06:00:00

Edit

Between the two results below, which one should you take?

getUTCfromNY("2015-11-01 01:00:00", "NY") GMT Time: 2015-11-01 06:00:00

getUTCfromNY("2015-11-01 01:00:00", "NY") GMT Time: 2015-11-01 05:00:00

回答1:

SimpleDateFormat#setTimezone() is the answer. One formatter with ETC timezone you use for parsing, another with UTC for producing output string:

DateFormat dfNy = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
dfNy.setTimeZone(TimeZone.getTimeZone("EST"));
DateFormat dfUtc = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
dfUtc.setTimeZone(TimeZone.getTimeZone("UTC"));

try {
    return dfUtc.format(dfNy.parse(input));
} catch (ParseException e) {
    return null;              // invalid input
}


回答2:

You can use two SimpleDateFormat, one for parse the date string with EST timezone, one for print the date with UTC timezone

String format = "yyyy-MM-dd HH:mm:ss";
    SimpleDateFormat estFormatter = new SimpleDateFormat(format);
    estFormatter.setTimeZone(TimeZone.getTimeZone("EST"));
    Date date = estFormatter.parse("2015-11-01 01:00:00");

    SimpleDateFormat utcFormatter = new SimpleDateFormat(format);
    utcFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));

    System.out.println(utcFormatter.format(date));


回答3:

Please refer to below mentioned code.

     DateFormat utcConverter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     utcConverter.setTimeZone(TimeZone.getTimeZone("GMT"));
     String sampleDateTime = "2015-11-01 01:00:00";
     DateFormat nyConverter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     nyConverter.setTimeZone(TimeZone.getTimeZone("EST"));
     Calendar nyCal = Calendar.getInstance();

     nyCal.setTime(nyConverter.parse(sampleDateTime));

     System.out.println("NY TIME :" +nyConverter.format(nyCal.getTime()));

    System.out.println("GMT TIME  :" +utcConverter.format(nyCal.getTime()));