前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于 toLocaleDateString 方法的实践分享

关于 toLocaleDateString 方法的实践分享

作者头像
CG国斌
发布2019-05-29 15:26:42
5920
发布2019-05-29 15:26:42
举报
文章被收录于专栏:维C果糖维C果糖

首先,抛出一个问题:

  • 用 AJAX 向后台发生请求的时候,其中的一个参数为new Date(),问是否能成功发送请求?
代码语言:javascript
复制
<script>
    // 设置超时时间
    setTimeout(function () {
        var tradeDate = new Date();
        $.ajax({
            url: "${path}/app/trade/queryTradeCount",
            type: "POST",
            data: {
                tradeDate: tradeDate
            },
            dataType: "JSON",
            async: "true",
            success: function (data) {
                alert("请求成功");
            },
            error: function (data) {
                alert("请求失败");
            }
        });
    }, 80);
</script>

示例代码如上所示,其结果就是:请求失败。至于原因嘛,tradeDateobject类型,而在 AJAX 中,object类型是不能直接与后台进行交互的,需要将其转换为string类型。在 JS 中,将new Date()转换为string类型的方法很多,但如果我们要求时间格式为dd/MM/yyyy呢?这时,有的同学可能就想到toLocaleDateString()方法啦!不可否认,toLocaleDateString()方法确实有可能将时间类型转换为dd/MM/yyyy格式,有图为证:

chrome-toLocaleDateString
chrome-toLocaleDateString

但实际上,toLocaleDateString()方法的真正含义为「根据本地时间把Date对象的日期部分转换为字符串」,这意味着:在不同的浏览器或者服务器中,我们可能得到不同的字符串。例如,将 Chrome 浏览器的版本从57升级为58再升级为69,通过toLocaleDateString()方法获取的时间字符串格式分别为:

代码语言:javascript
复制
#Chrome = 57
> new Date().toLocaleDateString()
> output: "2018/9/28"

#Chrome = 58
> new Date().toLocaleDateString()
> output: "2018-9-28"

#Chrome = 69
> new Date().toLocaleDateString()
> output: "9/28/2018"

如果我们使用69版本的 Chrome 浏览器又想获取yyyyMMdd格式的字符串,很有可能通过如下代码来实现:

代码语言:javascript
复制
var tradeDate = (new Date()).toLocaleDateString().split('/');
var year = tradeDate[2];
var month = tradeDate[0];
var day = tradeDate[1];
var yyyyMMdd = year + '-' + month  + '-' + day;

这样的话,在不同的浏览器或者服务器中,其表现的效果估计会让我们欲仙欲死啦!因此,要慎用toLocaleDateString()方法或者根本就不用toLocaleDateString()方法。如果我们想获取yyyyMMdd格式的字符串,有一种很简单的方法,即:

代码语言:javascript
复制
var tradeDate = new Date();
var yyyyMMdd = tradeDate.getFullYear() + "-"
 + (tradeDate.getMonth() + 1) + "-" + tradeDate.getDate();

其中,getMonth()之所以要+1,是因为 JS 中getMonth()方法获取的值为0 ~ 11,分别对应我们的 1 月至 12 月,因此要想转换为我们熟悉的1 ~ 12,这就是需要我们稍微变通一下啦!至此,分享完毕。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档