繁体   English   中英

在javascript中更改日期格式

[英]change date format in javascript

我有像dd.mm.yyyy这样的日期格式

24.1.2017 00:00:00

结果我想要

2017/01/24

我写了这个函数来改变日期来格式化我想要的。

 Date.prototype.yyyymmdd = function() {
                var mm = this.getMonth() + 1; // getMonth() is zero-based
                var dd = this.getDate();

                return [this.getFullYear(),
                        (mm>9 ? '' : '0') + mm,
                        (dd>9 ? '' : '0') + dd
                ].join('/');
            };

            var date = new Date("@Model.BeginTime");

            $("#newsstart").val(date.yyyymmdd());

问题是将字符串转换为日期

var date = new Date("@Model.BeginTime");

这是无效的日期。 我该如何解决这个问题??

您可以使用库将 UTC 转换为您想要的格式。

你可以有点像下面的moment(date).format("YYYY-MM-DD");

时刻是要使用的js :)

不接受 24.1.2017 00:00:00 格式

那是因为您错误地实现了类或使用了无效的格式。

通过检查你的代码,我看到这个在这里2017年1月24日00:00:00不匹配此模式的DD.MM.YYYY

2017/01/24格式为yyyy/MM/DD

这里有一段代码可以更好地说明:)

 var res1 = $("#result"); var dateForm = moment('24.1.2017 00:00:00','DD.M.YYYY hh:mm:ss').format('YYYY/MM/DD') res1.text(dateForm);
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://momentjs.com/downloads/moment.js"></script> <div id="result"></div>

问题是将字符串转换为日期

var date = new Date("@Model.BeginTime");

您的问题是您正在使用 Date 构造函数来解析字符串,这是不推荐的。 使用 Date 构造函数(和 Date.parse,它们等效于解析)的解析在很大程度上依赖于实现并且不可靠。 您应该使用一个小函数或库将其解析为日期。

由于您很乐意使用格式函数扩展Date.prototype ,您还可以使用等效的解析扩展String.prototype ,例如

 String.prototype.parseYMD = function() { var b = this.split(/\\D/); return new Date(b[0], b[1]-1, b[2]); } console.log('2017/01/21'.parseYMD().toString());

或者你可以使用像fecha.js这样的小库:

var date = fecha.parse('2017/01/24','YYYY/MM/DD');

聚苯乙烯

这里的具体问题是您的字符串类似于 ISO 8601,但对于某些浏览器来说不够相似。 有些人会认为它是无效的 ISO 8601 并返回一个无效的日期,其他人会认为它不是 ISO 8601 并将其解析为 2017 年 1 月 24 日的日期。根据 ECMAScript 语言规范,这两个结果都可以被认为是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM