如何使用java将日期时间转换为其他时区。
示例:2021年6月11日20:00至2021年6月11日06:00 pm
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date parsed = format.parse("2021-03-01 20:00");
* \\to//*
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm z");
Date parsed = format.parse("2021-03-01 06:00 PM");
这样地
4条答案
按热度按时间ct3nt3jp1#
解决方案的关键是获得两个日期时间之间的区域偏移量,您可以使用该偏移量进行计算
Duration#between
然后将第一个日期时间的区域偏移量更改为第二个日期时间的区域偏移量(等于计算的持续时间的小时和分钟部分)。api的日期时间
java.util
以及它们的格式化api,SimpleDateFormat
过时且容易出错。建议完全停止使用它们,并切换到现代日期时间api。在trail:date-time了解有关现代日期时间api的更多信息。注意:如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。
lpwwtiir2#
你必须把你的日期格式放到一个特定的区域,因为你在帖子中没有提到,我将在下面给出一个示例,
现在用这个
simpleDateFormat
对于特定的时区,可以设置值的格式。u5rb5r593#
首先,您应该使用新的Java8API来处理数据和时间,
java.time
其次,您需要有一个区域进行转换。在这里,我假设您要使用设备的区域(并转换为gmt)作为from,gmt作为to。d4so4syb4#
joakim danielson的回答是正确的:使用java.time,现代的java日期和时间api,进行日期和时间工作。我的解决方案大致遵循相同的总体模式。我想给你看一些细节。
String input = "2021-03-01 20:00";