public class DateUtils {
/**
* 标准日期时间格式,精确到秒:yyyy-MM-dd HH:mm:ss
*/
public static final String NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* UTC时间:yyyy-MM-dd'T'HH:mm:ss'Z'
*/
public static final String UTC_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public static String timeZoneTransfer(String srcTime) {
return timeZoneTransfer(srcTime, NORM_DATETIME_PATTERN, ZoneId.systemDefault().getId());
}
/**
* 时间时区转换为本地时间,输出格式为 yyyy-MM-dd HH:mm:ss
*
* @param srcTime 原始时间字符串
* @param srcPattern 原始时间字符串日期格式
* @param srcZoneId 原始时间的时区
* @return
*/
public static String timeZoneTransfer(String srcTime, String srcPattern, String srcZoneId) {
return timeZoneTransfer(srcTime, srcPattern, srcZoneId, UTC_PATTERN, "UTC");
}
/**
* 时间时区转换
*
* @param srcTime 原始时间字符串
* @param srcPattern 原始时间字符串日期格式 yyyy-MM-dd HH:mm:ss 等
* @param srcZoneId 原始时间的时区
* @param dstPattern 目标时间输出格式
* @param dstZoneId 目标时区
* @return 时区转换后的格式化时间字符串
*/
public static String timeZoneTransfer(String srcTime, String srcPattern, String srcZoneId,
String dstPattern, String dstZoneId) {
// 解析时间字符串为 LocalDateTime 对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(srcPattern);
LocalDateTime secDateTime = LocalDateTime.parse(srcTime, formatter);
// 将 src 时间转换为 dst 时间
ZonedDateTime dstDateTime = secDateTime
.atZone(ZoneId.of(srcZoneId))
.withZoneSameInstant(ZoneId.of(dstZoneId));
// 格式化输出时间字符串
String outputDateTimeStr = dstDateTime.format(DateTimeFormatter.ofPattern(dstPattern));
return outputDateTimeStr;
}
public static void main(String[] args) {
String srcTime = "2023-07-26 14:00:00";
System.out.println(timeZoneTransfer(srcTime));
String utcTime = "2023-06-29T13:29:54Z";
System.out.println(timeZoneTransfer(utcTime, UTC_PATTERN, "UTC", NORM_DATETIME_PATTERN,
ZoneId.systemDefault().getId()));
}
}
java 日期时区转换类
最新推荐文章于 2024-06-22 11:08:31 发布
这是一个Java类,定义了标准日期时间格式和UTC时间格式,并提供了方法进行时间时区转换。DateUtils类中的timeZoneTransfer方法接受不同格式和时区的时间字符串,将其转换为指定格式和时区的字符串。
摘要由CSDN通过智能技术生成