[英]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.