SpringBoot-根据各地区时间设置接口有效时间

之前接到需求,需要给APP内的H5活动的接口加上时效性,防止活动后还有用户调用接口;

因为有些H5活动是长期的,有些是短期的,所以我需要做好区分,因为app是国外用户在用的,所以还要考虑的时区的问题;

想了一下决定用注解+`拦截器的方式去实现

默认已经创建好了SpringBoot项目

一、获取不同时区的时间方式

1、通过时区获取所在时区时间

/**
* 获得东八区时间
*
* @return
*/
public static String getChinaTime() {
TimeZone timeZone = TimeZone.getTimeZone("GMT+8:00");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(timeZone);
return simpleDateFormat.format(new Date());
}

2、通过地区获取所在时区时间

根据ZoneId 获取当地时间

ZonedDateTime是结合了LocalDateTime类与 ZoneId 类。它用于表示具有时区(地区/城市,如欧洲/巴黎)的完整日期(年,月,日)和时间(小时,分钟,秒,纳秒)

ZoneId pstZoneId = ZoneId.of("America/Los_Angeles");
DateTimeFormatter pstDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(pstZoneId);
ZonedDateTime pstZonedDateTime = ZonedDateTime.parse(time, pstDateTimeFormatter);

3、获取所在时区的时间戳

String region = "America/Los_Angeles";
ZoneId pstZoneId = ZoneId.of(region);
long nowTime = ZonedDateTime.now(pstZoneId).toInstant().toEpochMilli(); //nowTime时间戳

当然还有其他方式获取得到,网上有很多工具类~~~

二、创建地区/时区枚举类

region属性表示时间,timeZone表示时区

还有一点要注意的,一些国家有冬令时和夏令时的区分,比如美国、德国、法国等,这里我同一用了协同世界时

public enum TimeZoneEnum {
​
    Asia_Shanghai("Asia/Shanghai","+8:00"),//中国-上海
    Asia_Hong_Kong("Asia/Hong_Kong","+8:00"),//香港
    Asia_Macau("Asia/Macau","+8:00"),//澳门
    Asia_Taipei("Asia/Taip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值