浅谈php、mysql、vue下时间格式的存储与传输,时间戳or timestamp

首先允许本人来段相声,遥想当年去美帝做项目,上海无法直达达拉斯,于是在棒子国转机。转机是第二天上午11点的飞机,早早到了机场checkin后,发现登机口人太多,就去了旁边的登机口看起了Naruto,看着看着发现已经10点出头了,于是我想着就去登机了,结果你懂的。由于手机时区没调,其实这时的棒子国已经11点多了,后面的一趴泪就不说了。。。

由于地球是圆的,时区的存在会让我们程序处理起来很麻烦。接下来浅谈下在,php、mysql、vue技术栈下的如何更好的存储和传输时间。

用时间戳存储传输

以前一直用时间戳存储和传输,mysql里存10位的int型,php用time(),vue用moment处理。

  1. 优点:时间戳到哪都一样,去了棒子国也是这个值
  2. 缺点:没啥致命的,无非是个10位还是13位的问题,代码处理下基本能用

用timestamp存储传输

由于最近开始用laravel写项目,发现框架默认的create_time是用timestamp,并且用Carbon来进行的时间处理。于是研究了下。发现其实mysql的timestamp存储和前端控件及Date函数对timestamp的处理还是很方便的。唯一麻烦的是前端如果传给php的是timestamp的话,php端的处理需要注意,比如:

$date_from_js = '2020-03-26T07:00:00.000Z'; // 从前端传来的时间

// 非Carbon处理方式
date_default_timezone_set('Asia/Shanghai'); // 这句很重要,说明时区,当然你的框架可能已经给你设定好了
$date_from_js_int = strtotime($date_from_js);
$date_without_carbon = date("Y-m-d H:i:s",$date_from_js_int);

// Carbon处理方式
$date_from_js_parse = Carbon::parse($date_from_js,'UTC'); // 这里必须是UTC
$date_from_js_parse->setTimezone('Asia/Shanghai'); // 而这里才是你想要用的时区
$date_with_carbon = $date_from_js_parse->toDateTimeString();

以下是具体的值
在这里插入图片描述
下面说下优缺点:

  • 优点:貌似框架,基类都支持的比较好,其实弄懂了时区的概念,确实也没啥麻烦的。不用像时间戳转来转去。
  • 缺点:timestamp有个2038年的问题,这个。。管它呢

接下来我会继续用timestamp来存储和传输,目前来说在前端的显示,后端的存储,时间的比较搜索方面都没啥问题。欢迎有问题的朋友一起探讨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F_angT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值