以指定格式将服务器 GMT 日期和时间转换为用户指定的日期和时区,并以日期数据类型返回

问题描述 投票:0回答:1

我正在尝试将从服务器接收到的日期转换为用户特定的日期格式(IST)并作为日期数据类型返回。附上示例代码和结果如下

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class ServerToClientDateTime {
    public static void main(String[] args) {
        try {
            String clientSpecificFormat = "yyyy-MM-dd HH:mm:ss";
            String clientTimezone1 = "America/New_York";
            String clientTimezone2 = "Asia/Kolkata";
            Date date = new Date();
            System.out.println(new Date());
            SimpleDateFormat dateFormat = new g(clientSpecificFormat);
            TimeZone americaNewyork = TimeZone.getTimeZone(clientTimezone1);
            TimeZone asiaKolkata = TimeZone.getTimeZone(clientTimezone2);
            dateFormat.setTimeZone(americaNewyork);

            System.out.println("\namerica/ newyork:" + dateFormat.format(date));
            System.out.println("Date format :" + dateFormat.parse(dateFormat.format(date)));

            dateFormat.setTimeZone(asiaKolkata);
            System.out.println("\nAsia/ Kolkata:" + dateFormat.format(date));
            System.out.println("Date format :" + dateFormat.parse(dateFormat.format(date)));
        } catch (Exception exp) {
            System.out.println(exp);
        }
    }
    
}

该计划的结果为

Wed Aug 09 11:57:46 IST 2023

america/ newyork:2023-08-09 02:27:46
Date format :Wed Aug 09 11:57:46 IST 2023

Asia/ Kolkata:2023-08-09 11:57:46
Date format :Wed Aug 09 11:57:46 IST 2023

为什么America/New_York解析后返回与GMT相同,如何获得期望的IST日期格式。

谢谢

java datetime timezone simpledateformat gmt
1个回答
0
投票

我试过了,请验证一下

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MMM/dd HH:mm:ss");
ZonedDateTime now = ZonedDateTime.now();
System.out.println(dtf.format(now));
ZonedDateTime dateTimeKolkata = now.withZoneSameInstant(ZoneId.of("Asia/Kolkata"));
System.out.println(dtf.format(dateTimeKolkata));
        
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
try {
   System.out.println("formater : "+formatter.parse(dtf.format(dateTimeKolkata)));
} catch (ParseException e) {
   e.printStackTrace();
}
© www.soinside.com 2019 - 2024. All rights reserved.