如何将Angular端的Moment Date转为Java Date可识别的格式
Angular端调整Moment日期输出适配Java Date的方案
方案1:直接匹配Java Date默认解析格式
Java Date类无自定义配置时默认可解析的格式为EEE MMM dd HH:mm:ss z yyyy,对应Moment的格式化规则如下:
- 首先确保Moment启用英文locale(避免生成中文的星期/月份缩写导致解析失败):
import moment from 'moment'; // 全局设置英文locale,仅需执行一次 moment.locale('en');
- 传参时调用format方法生成对应格式的字符串:
// 示例:当前时间生成匹配格式 const effectiveDt = moment().format('ddd MMM DD HH:mm:ss z YYYY'); // 如果需要固定输出指定时区(比如印度时区IST),可引入moment-timezone扩展包支持 import 'moment-timezone'; const effectiveDt = moment().tz('Asia/Kolkata').format('ddd MMM DD HH:mm:ss z YYYY');
输出结果示例:Tue Dec 07 11:57:09 IST 2021,和Java new Date()输出格式完全一致。
方案2:更稳妥的标准化格式适配(推荐)
避免因时区、locale差异导致的解析异常,推荐前后端统一使用ISO 8601标准格式传输,仅需后端加一行注解配置即可:
- 后端接口添加
@DateTimeFormat注解指定解析规则:
public @ResponseBody Response updateAll( @RequestParam(name = "effective-dt", required = false) // 匹配ISO 8601格式 @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ") Date effectiveDt) { /***Business Logic***/ }
- Angular端直接输出ISO格式字符串即可:
const effectiveDt = moment().toISOString();
内容的提问来源于stack exchange,提问作者Lucifer Geralt
相关产品推荐
相关产品推荐

