年月日转化为时间戳出现bug

当后台给出一个时间,比如:2019-12-02 20:18:43,前端一下会想出好几种方法来转化为时间戳:

JS:

data: {
    date: ‘2019-12-02 20:18:43‘,
    getTime: ‘‘,
    valueOf: ‘‘,
    dateParse: ‘‘
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const {date} = this.data;
    // 方法一
    const getTime = new Date(date).getTime();
    // 方法二
    const valueOf = new Date(date).valueOf();
    // 方法三
    const dateParse = Date.parse(date);
    // 设置data值
    this.setData({ getTime, valueOf, dateParse})
  },

wxml:

<view>时间:{{date}}</view>
<view>时间戳getTime:{{getTime}}</view>
<view>时间戳valueOf:{{valueOf}}</view>
<view>时间戳dateParse:{{dateParse}}</view>

结果肯定会按照我们所想的展示:1575289123000

然后我们分别拿Android和IOS真机测试:

真机测试并未按照我们预想的来,我也是在项目发布之后发现问题的,通过将日期转化为时间戳过滤优惠券,在用户发现优惠券不能用之后才发现问题。然后我们换个思路,将 日期中间的 - 换为 /试一下,

const newDate = date.replace(/-/g, ‘/‘);
console.log(newDate) // 2019/12/02 20:18:43

如:2019/12/02 20:18:43,

转化为时间戳如:1575289123000,

小程序控制台也和我们预期的一样,让我们来看真机如何

现在来看Android和IOS都能正常显示。

此类问题并不是小程序单独所有,所有的JS转化都有问题,html页面也存在这样的问题,感兴趣的同学可以自己试试。

由此看来,日期转化为时间戳,苹果手机存在bug,日期分隔符必须得用/,而不能用-,最好的办法就是后台返回时间戳,前端要什么格式自己转化, 日期比较也方便计算。

原文地址:https://www.cnblogs.com/webfont-yxw/p/12007993.html

时间: 2024-08-01 21:20:45

年月日转化为时间戳出现bug的相关文章

jQuery将时间转化为时间戳或将时间戳转化为时间

下面的这段代码,是可以将时间戳转为时间,或者将时间戳转为时间: <script type="text/javascript"> $.extend({ myTime:{ CurTime: function(){ return Date.parse(new Date())/1000; }, DateToUnix: function(string) { var f = string.split(' ', 2); var d = (f[0] ? f[0] : '').split('

bootstrap timepicker 在angular中取值 并转化为时间戳

上一篇我们讲到angular对于timepicker的一个封装后的插件,但是由于angular的版本必须是v1.2.30以上的.对于有些大型系统,一时升级angular的版本实在耗费时间.那么可以用这种方法来取值. 页面上的时间格式是这样的: 文件引入 '/bootstrap-datetimepicker.min.css', '/bootstrap-datetimepicker.min.js', '/bootstrap-datetimepicker.zh-CN.js',//中文包 html <d

Echart中X轴为时间坐标刻度时,后台返回时间List被强制转化为时间戳问题

if(recordlist!=null&&recordlist.size()>0) { for (Record record : recordlist) { //根据频次决定使用年月还是执行时间 if(frequency!=null&&frequency.equals("每小时")) { list.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(record.get(

php设置时区和strtotime转化为时间戳函数

date_default_timezone_set('PRC');//设置中华人民共和国标准时间 strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳 格式:int strtotime ( string $time [, int $now ] )  本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间.

jqurey 将如2017-5-30转化为时间戳或者时间戳转化为日期的js方法

<script>    function datetime_to_unix(datetime){        var tmp_datetime = datetime.replace(/:/g,'-');        tmp_datetime = tmp_datetime.replace(/ /g,'-');        var arr = tmp_datetime.split("-");        var now = new Date(Date.UTC(arr[0

iOS将标准时间转化为时间戳

NSDateFormatter *date=[[NSDateFormatteralloc] init]; [date setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *d=[date dateFromString:theDate]; NSTimeInterval late=[dtimeIntervalSince1970]*1; NSDate* dat = [NSDatedateWithTimeIntervalSinceNow:0]; NSTi

php 格利高里函数转化成时间戳

/** * 时间格式处理 * @param $days * @param bool $time * @return string */public function excelTime($days, $time=false){ if(is_numeric($days)){ //based on 1900-1-1 $jd = gregoriantojd(1, 1, 1970); $gregorian = JDToGregorian($jd+intval($days)-25569); $myDate

PHP时间戳 strtotime()使用方法和技巧

在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了, 下面我来给大家分享一下时间戳函数 strtotime用法. 获取指定的年月日转化为时间戳: pHP时间戳函数获取指定日期的unix时间戳 strtotime('2012-12-7') 示例如下: <?php echo strtotime('2012-12-7'); //结果:1354838400 ?> 说明:返回2012年12月7日0点0分0秒时间戳. 将当前年月日转化为时间戳

转载:PHP时间戳 strtotime()使用方法和技巧

在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了 获取指定的年月日转化为时间戳:pHP时间戳函数获取指定日期的unix时间戳 strtotime('2012-12-7') <?php echo strtotime('2012-12-7'); //结果:1354838400 ?> 说明:返回2012年12月7日0点0分0秒时间戳. 将当前年月日转化为时间戳:PHP时间戳函数获取当前日期的unix时间戳,示例如下: <?php