如何从Java返回至AngularJS控制器的Map中获取日期值
解决AngularJS获取Java返回Map中日期值的问题
嘿,我来帮你搞定这个显示[object object]的问题!其实核心就是你拿到的日期是一个JS对象,直接输出肯定会显示这个,得把它拆成具体字段或者转成可读的日期格式才行。
第一步:先搞清楚返回的日期结构
首先你可以在AngularJS控制器里先打印一下拿到的响应对象,看看日期到底是什么样的:
// 假设你用$http请求拿到的响应存在response变量里 console.log(response.data.createDate); // 把你的日期键替换成实际的键名
打印后你会看到几种常见的情况,对应不同的处理方式:
情况1:日期是包含年月日等字段的对象
比如Java的Date对象被序列化成了这样的结构:
{ "year": 2024, "month": 4, // 注意:Java里的月份是从0开始的,所以5月会显示4 "day": 20, "hours": 15, "minutes": 20 }
那你可以直接访问这些字段,拼接成你想要的格式:
var dateObj = response.data.createDate; // 拼接成YYYY-MM-DD格式,记得给月份加1 var readableDate = `${dateObj.year}-${dateObj.month + 1}-${dateObj.day}`; // 如果要带时间的话 var readableDateTime = `${dateObj.year}-${dateObj.month + 1}-${dateObj.day} ${dateObj.hours}:${dateObj.minutes}`;
情况2:日期是时间戳(毫秒数)
如果Java返回的是日期对应的毫秒数(比如1716208800000),那你可以用JS的Date对象来转换:
var timestamp = response.data.createDate; var date = new Date(timestamp); // 转成YYYY-MM-DD格式 var readableDate = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; // 转成带时间的格式 var readableDateTime = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}`;
情况3:日期是ISO格式的字符串
如果Java用了Jackson这类序列化工具,可能直接把Date转成了ISO格式的字符串,比如"2024-05-20T15:20:00.000+0000",那你可以直接用这个字符串,或者转成Date对象再处理:
var dateStr = response.data.createDate; // 直接用的话可以截取前面的日期部分 var readableDate = dateStr.split('T')[0]; // 或者转成Date对象自定义格式 var date = new Date(dateStr); var readableDateTime = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}`;
只要你先搞清楚返回的日期结构,对应上面的方法处理,就能拿到具体的日期值,而不是[object object]啦!
内容的提问来源于stack exchange,提问作者user222
相关产品推荐
相关产品推荐

