我正在尝试将从服务器接收到的日期转换为用户特定的日期格式(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日期格式。
谢谢
我试过了,请验证一下
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();
}