在 React & Vue 中 将矫正时间(UTC)转为本地时间的奇淫技巧!!!

看过看多前端开发者,转个时间还需要下载专业的包,其实,例如 ThinkSNS Plus 项目,后端时间固定为 UTC 的,有一个小技巧,转换本地时间爽歪歪!!!

还有那很多公共 API 基本都是 UTC 时间,包括 GitHub。

Vue 版

<template>
  <span> {{ date }} </span>
</template>

<script>
export default {

  props: {
    utc: {
      type: String, required: true
    }
  },

  computed: {

    date() {
      return (new Date(`${this.utc}Z`)).toLocaleString();
    }

  }

};
</script>

React 版本

import React from 'react';

export default ({ utc }) => (<span> {(new Date(`${utc}Z`).toLocaleString())} </span>)

浏览器测试版

let timeStr = '2017-9-1 00:00:00';
console.log(
    (new Date(timeStr + 'Z')).toLocaleString()
);

将上面代码复制到浏览器的 Console 粘贴 会车执行。

原理

例如使用 Laravel 拿到的时间是 2017-9-13 16:20:35 我们只要在最后加入 Z 字符串,就表示为「矫正时间」然后 Date 函数会自动处理时区问题的。

可以强化一下,结尾是 z 则不添加字符串。

当然,前提条件是你的程序类似 ThinkSNS Plus 一样统一使用 UTC。

Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。
附言 1  ·  6年前

原谅我是标题党!!!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

toLocaleString输出的格式是 2017/9/1 上午8:00:00,如果想输出其他格式就麻烦了

6年前 评论
medz

@klgd 我觉得其他格式也不是很麻烦。哈哈哈。

6年前 评论

可以使用moment.js,可以各种转换,但是你压缩代码可能要增加一坨,/(ㄒoㄒ)/~~

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!