gpt4 book ai didi

java - 使用2个Calendar类实例来获取时差

转载 作者:行者123 更新时间:2023-12-01 11:21:58 25 4
gpt4 key购买 nike

我正在使用 Java 中的日历库来尝试找出我的应用程序的问题:

我有两个日历实例,出发到达

出发将于2015年7月15日下午5:35从芝加哥出发,而到达将于9点降落2015 年 7 月 16 日上午 50 点,德国柏林。

我当前显示旅行持续时间的代码是:

    Calendar depart = Calendar.getInstance();       
Calendar arrive = Calendar.getInstance();

depart.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
arrive.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));

depart.set(Calendar.MONTH, 6);
depart.set(Calendar.DAY_OF_MONTH, 15);
depart.set(Calendar.HOUR_OF_DAY, 17);
depart.set(Calendar.MINUTE, 35);

arrive.set(Calendar.MONTH, 6);
arrive.set(Calendar.DAY_OF_MONTH, 16);
arrive.set(Calendar.HOUR_OF_DAY, 9);
arrive.set(Calendar.MINUTE, 50);

System.out.println("Depart: " + depart.getTime() + "\nArrive: " + arrive.getTime());

long hours = (arrive.getTimeInMillis() - depart.getTimeInMillis()) / (1000*60*60);
long minutes = (arrive.getTimeInMillis() - depart.getTimeInMillis()) / (1000*60) - (hours*60);

System.out.println("Flight duration: " + hours + " hours" + " " + minutes + " minutes");`

结果是:

出发:2015 年 CDT 7 月 15 日星期三 17:35:53
抵达时间:2015 年 CDT 7 月 16 日星期四 02:50:53
飞行时长:9小时15分钟

...但我需要的结果是:

出发:2015 年 CDT 7 月 15 日星期三 17:35:53
抵达: 7 月 16 日星期四 **09:50:53 中欧时区** 2015
飞行时长:9小时15分钟

我需要更改出发和到达时间,以便它们显示本地时间,但仍报告正确的行程持续时间 9 小时 15 分钟。

最佳答案

您正在调用 getTime() 来获取 Date 实例,然后隐式调用 toString() - 这将始终使用系统本地时区。

您想要使用SimpleDateFormat,以便您可以控制用于格式化的时区。例如:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm z", Locale.US);
formatter.setTimeZone(depart.getTimeZone());
System.out.println("Depart: " + formatter.format(depart.getTime()));
formatter.setTimeZone(arrive.getTimeZone());
System.out.println("Arrive: " + formatter.format(arrive.getTime()));

关于java - 使用2个Calendar类实例来获取时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31120039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com