vue 时间格式化

电玩女神 2021-10-18 20:22 581阅读 0赞

前段时间利用vue实现数据在页面上的显示,我本人比较喜欢用谷歌浏览器,但是测试就是不用,用的360 ,说我页面上显示的时候时间存在问题

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhdG91bmlhbzE_size_16_color_FFFFFF_t_70

这个是在360 浏览器上显示出来的

看样子时间确实有点问题

我的代码是这样的:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhdG91bmlhbzE_size_16_color_FFFFFF_t_70 1

这个是利用vue的前台

我们来看jsdateformat的定义:

  1. var vu = new Vue({
  2. el : '.table',
  3. methods : {
  4. dateFormat : function(time) {
  5. var date = new Date(time);
  6. var year = date.getFullYear();
  7. var month = date.getMonth() + 1 < 10 ? "0"
  8. + (date.getMonth() + 1) : date.getMonth() + 1;
  9. var day = date.getDate() < 10 ? "0" + date.getDate() : date
  10. .getDate();
  11. var hours = date.getHours() < 10 ? "0" + date.getHours() : date
  12. .getHours();
  13. var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes()
  14. : date.getMinutes();
  15. var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds()
  16. : date.getSeconds();
  17. return year + "-" + month + "-" + day + " " + hours + ":"
  18. + minutes + ":" + seconds;
  19. }
  20. },
  21. data : {
  22. data : []
  23. }
  24. });

利用这个方法在谷歌浏览器上显示真的是正常的

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhdG91bmlhbzE_size_16_color_FFFFFF_t_70 2

为什么会是这个样子

原来我们在后台返回的是从数据库中取出来的时间 util.Date 这种类型,但是谷歌浏览器的时间会转换为时间戳的形式 比如:16567777362632 形式

但是IE浏览器时间会格式是:2019-08-01T09:13:40.000+0000

这样也就是谷歌和IE我们后台返回的日期格式,前台要注意区分浏览器

所以:

  1. var vu = new Vue({
  2. el : '.table',
  3. methods : {
  4. dateFormat : function(time) {
  5. if (!!window.ActiveXObject || "ActiveXObject" in window) {
  6. var arr = time.split("T");
  7. var d = arr[0];
  8. var darr = d.split('-');
  9. var t = arr[1];
  10. var tarr = t.split('.000');
  11. var marr = tarr[0].split(':');
  12. time = parseInt(darr[0]) + "/" + parseInt(darr[1]) + "/"
  13. + parseInt(darr[2]) + " " + parseInt(marr[0]) + ":"
  14. + parseInt(marr[1]) + ":" + parseInt(marr[2]);
  15. }
  16. var date = new Date(time);
  17. var year = date.getFullYear();
  18. var month = date.getMonth() + 1 < 10 ? "0"
  19. + (date.getMonth() + 1) : date.getMonth() + 1;
  20. var day = date.getDate() < 10 ? "0" + date.getDate() : date
  21. .getDate();
  22. var hours = date.getHours() < 10 ? "0" + date.getHours() : date
  23. .getHours();
  24. var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes()
  25. : date.getMinutes();
  26. var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds()
  27. : date.getSeconds();
  28. return year + "-" + month + "-" + day + " " + hours + ":"
  29. + minutes + ":" + seconds;
  30. }
  31. },
  32. data : {
  33. data : []
  34. }
  35. });

dataFormat上面我添加一个判断,如果是IE浏览器我先把时间转换为时间戳的形式

这样360上面时间显示就正常了

希望对你有所帮助

发表评论

表情:
评论列表 (有 0 条评论,581人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue 时间格式化

    前段时间利用vue实现数据在页面上的显示,我本人比较喜欢用谷歌浏览器,但是测试就是不用,用的360 ,说我页面上显示的时候时间存在问题 ![watermark_type_Zm