Java时间戳和时区的转换

srcTimeZone为服务器所在的时区。
destTimeZone为目标转换时区。

convertDateBetweenTimeZone为转换函数,输入需要转换的目标时区,和时间戳,返回目标时区的时间戳对应时间

 




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


public class Test002 {
    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static String dateTransformBetweenTimeZone(Date sourceDate, DateFormat formatter,
                                                      TimeZone sourceTimeZone, TimeZone targetTimeZone) {
        Long targetTime = sourceDate.getTime() - sourceTimeZone.getRawOffset() + targetTimeZone.getRawOffset();
        return getTime(new Date(targetTime), formatter);
    }

    public static String getTime(Date date, DateFormat formatter) {
        return formatter.format(date);
    }

    public static String convertDateBetweenTimeZone(String timeZone,Long createTime){
        DateFormat dateFormat = new SimpleDateFormat("Z");
        String localTimeZone = dateFormat.format(new Date());
        TimeZone srcTimeZone = TimeZone.getTimeZone("GMT"+localTimeZone);
        TimeZone destTimeZone = TimeZone.getTimeZone(timeZone);
        DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
        String destDateTime = dateTransformBetweenTimeZone(new Date(createTime), formatter, srcTimeZone, destTimeZone);
        return destDateTime;
    }
    public static void main(String[] args) {
        Long datetime = System.currentTimeMillis();
        System.out.println(datetime);
        System.out.println(convertDateBetweenTimeZone("GMT+9",datetime));
    }
}

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 时间戳时间之间的转换可以使用 `java.util.Date` 和 `java.time` 包中的类。 1. 将时间戳转换时间 使用 `java.util.Date` 类的构造方法可以将时间戳转换时间。 ```java long timestamp = 1627597782000L; // 时间戳,单位毫秒 Date date = new Date(timestamp); System.out.println(date); // 输出:Fri Jul 30 10:29:42 CST 2021 ``` 2. 将时间转换时间戳 可以使用 `java.util.Date` 类的 `getTime()` 方法获取时间时间戳值。 ```java Date date = new Date(); long timestamp = date.getTime(); System.out.println(timestamp); // 输出:1627597782000 ``` 3. 使用 java.time 包进行时间戳时间之间的转换 Java 8 引入了 `java.time` 包,提供了一组全新的日期和时间 API。可以使用 `Instant` 类将时间戳转换时间,使用 `LocalDateTime` 类将时间转换时间戳。 ```java long timestamp = 1627597782000L; // 时间戳,单位毫秒 Instant instant = Instant.ofEpochMilli(timestamp); System.out.println(instant); // 输出:2021-07-30T02:29:42.000Z LocalDateTime datetime = LocalDateTime.now(); long timestamp2 = datetime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); System.out.println(timestamp2); // 输出:1627597782000 ``` 上面代码中,`Instant.ofEpochMilli()` 方法将时间戳转换为 `Instant` 类型的时间,`LocalDateTime.now()` 获取当前时间,`atZone()` 方法将当前时间转换为指定时区时间,`toInstant()` 方法将指定时区时间转换为 `Instant` 类型的时间,`toEpochMilli()` 方法获取 `Instant` 类型时间时间戳值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值