原文地址:https://zhengkai.blog.csdn.net/article/details/89096250

1. 问题背景

有时候后端java返回的时间格式是时间戳,这个是由于ORM映射的关系一般都映射为时间戳,所以不能直接用于显示的,例如1554710403000,需要前端js/vue进行转换。

vue/js时间戳转标准格式 - 图2

2. 解决方案

vue/js时间戳转标准格式 - 图3

  1. // 初级转换:时间戳 => 标准格式
  2. formatterDate(data) {
  3. //blog.csdn.net/moshowgame
  4. var date = new Date(parseInt(data.responseTime) );
  5. Y = date.getFullYear() + '-';
  6. M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
  7. D = (date.getDate()<10?'0'+date.getDate():date.getDate()) + ' ';
  8. h = (date.getHours() <10?'0'+date.getHours() :date.getHours() )+ ':';
  9. m = (date.getMinutes() <10?'0'+date.getMinutes() :date.getMinutes() ) + ':';
  10. s = (date.getSeconds() <10?'0'+date.getSeconds() :date.getSeconds() );
  11. return(Y+M+D+h+m+s);
  12. }
  1. // 高级转换:时间戳 => 标准格式
  2. formatDate: function(time, fmt){
  3. //blog.csdn.net/moshowgame
  4. var date = time ? new Date(time) : new Date(),
  5. fmt = fmt || 'yyyy-MM-dd hh:mm:ss';
  6. if (/(y+)/.test(fmt)) {
  7. fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  8. }
  9. let o = {
  10. 'M+': date.getMonth() + 1,
  11. 'd+': date.getDate(),
  12. 'h+': date.getHours(),
  13. 'm+': date.getMinutes(),
  14. 's+': date.getSeconds()
  15. };
  16. for (let k in o) {
  17. if (new RegExp(`(`+k+`)`).test(fmt)) {
  18. let str = o[k] + '';
  19. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length));
  20. }
  21. }
  22. return fmt;
  23. }