部署在阿里云ECS服务器上的微服务项目中获取到的时间和windows的时间不一样的问题

继上一篇文章《阿里云ECS服务器无法发送邮件问题解决方案》之后,又发现登录的时候发送邮件中的时间和自己windows上的时间不一样,大概找了一下原因,是LocaDateTime使用的时区不一样导致的远程服务器和本机时间不一致。

只需要在LocaDateTime.now()方法中传一个参数,这个参数的类型为ZoneId,表示时区ID。于是,对原有的代码再次修改

java 复制代码
// 3、邮件通知
if (emailProperties.isEnable()) {
   new Thread(() -> {
      // 定义日期格式
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

      MimeMessage message = javaMailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message);

      try {
         String text = "您的账号" + username + "在广州登录了。" +
               "[" + LocalDateTime.now(ZoneId.of(systemSettingsProperties.getZoneId())).format(formatter) + "]";

         helper.setFrom(emailProperties.getFrom());
         helper.setTo(emailProperties.getTo());
         helper.setText(text);

         javaMailSender.send(message);
      } catch (MessagingException e) {
         e.printStackTrace();
      }
   }).start();
}

ZoneId.of(systemSettingsProperties.getZoneId())这行代码通过ZoneId的静态方法of()创建了一个ZoneId对象,参数指定了时区ID,文章中使用的时区ID为Asia/Shanghai

java 复制代码
# 系统设置
system:
  settings:
    # 时区ID
    zone-id: Asia/Shanghai
    # 是否开启登录日志
    login-log: false
    # 是否开启鉴权
    authorization: true

SystemSettingsProperties类用于读取配置信息,可以通过配置文件动态设置这个时区ID。

java 复制代码
package cn.edu.sgu.www.mhxysy.property;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author heyunlin
 * @version 1.0
 */
@Data
@Component
@ConfigurationProperties(prefix = "system.settings")
public class SystemSettingsProperties {

    /**
     * 是否开启鉴权
     */
    private boolean authorization;

    /**
     * 是否开启日志
     */
    private boolean loginLog;

    /**
     * 时区ID
     */
    private String zoneId;
}
相关推荐
翼龙云_cloud2 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
墨风如雪3 小时前
拒绝被找回!MJJ必修课:Outlook邮箱交易后的“防回手”安全设置全攻略
服务器
DX_水位流量监测3 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina4 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
AKAMAI4 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·测试
Mr_Xuhhh4 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
齐 飞6 小时前
使用阿里云的MaxCompute查询sql时报错:DruidPooledPreparedStatement: getMaxFieldSize error
sql·阿里云·odps
China_Yanhy7 小时前
AWS EKS三种类别,如何选择
云计算·aws
m0_738120727 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
GHL2842710908 小时前
无法连接服务端socket
linux·服务器·网络