将日期格式转换为jQuery格式

8

我需要将日期以“yy mm dd”的格式显示为2014-11-04。

目前,我的脚本仍然显示为Tue Nov 04 2014 00:00:00 GMT+0200(Egypt Standard Time)。

$(document).ready(function() { 
    var userDate = '04.11.2014';
    from = userDate.split(".");
    f = new Date(from[2], from[1] - 1, from[0]);
    console.log(f); 
});

1
你可以使用moment.js吗?在这里看看 - http://momentjs.com/ - RahulB
1
jQuery 没有关于日期的实用函数。 - Ram
我添加了Moment插件,但是我迷失了,不确定如何将代码与我的代码结合起来。 - Nasser
用正则表达式替换为破折号,为什么不使用 regex 替换呢? - vintastic
3个回答

18
您可以使用日期对象的方法来构造它。
var date    = new Date(userDate),
    yr      = date.getFullYear(),
    month   = date.getMonth() < 10 ? '0' + date.getMonth() : date.getMonth(),
    day     = date.getDate()  < 10 ? '0' + date.getDate()  : date.getDate(),
    newDate = yr + '-' + month + '-' + day;
console.log(newDate);

非常感谢,但仍不是我需要的。如果月份或日期是单个数字,必须显示零。 - Nasser
完美运行,感谢Jared。 - Nasser
为什么在date.getMonth()和date.getDate()之前有一个“+”符号?这些是必要的吗? - Anthony
1
@Anthony,那是一元加运算符。它用于将操作数强制转换为数字,例如 +"3" === 3。而且,如果我没记错的话,那些函数本来就返回整数,所以它们不是必需的。 - Jared Smith
月份 = (日期.getMonth()+1) < 10 ? '0' + (日期.getMonth()+1) : (日期.getMonth()+1), - Arslan Tabassum

8
您可以尝试以下方法:
   $(document).ready(function() {
        var userDate = '04.11.2014';
        var from = userDate.split(".");
        var f = new Date(from[2], from[1], from[0]);
        var date_string = f.getFullYear() + " " + f.getMonth() + " " + f.getDate();
        console.log(date_string);
    });

或者你可以考虑使用Moment.js。使用它处理日期会更加简单易懂:

$(document).ready(function() {
    var userDate = '04.11.2014';
    var date_string = moment(userDate, "DD.MM.YYYY").format("YYYY-MM-DD");
    $("#results").html(date_string);
});

MOMENT.JS DEMO: FIDDLE


.getMonth()应该返回一个从0到11的基于零的数字,而你的返回值是"11" http://jsfiddle.net/8ke27xth/1/ 8D - Roko C. Buljan
我理解这是从零开始的,只是似乎并不重要,因为他只想要月份输出。无论如何,moment.js 是一种更好的方法。 - CodeGodie
差不多了,谢谢。但是我肯定需要零。例如,如果月份是三月,则应显示打印03,如果日期是第四天,则应打印04,因此结果应为2014-03-04,谢谢。 - Nasser
@nasser...不,零基础意味着0-11而不是1-12。 - Roko C. Buljan
用你的代码打印出来是 2014-11-4,但这会让我的搜索困惑,应该要显示成 2014-11-04,所以如果是单个数字的话需要加上零。 - Nasser
@nasser,你能不能不用moment.js?这会让你少走很多弯路。我以前也曾经创建过一个日历,一开始我并不想使用moment.js,但是一旦我使用了它,就再也没有回头了。不要试图重新发明轮子。 - CodeGodie

0

我认为你可能会在这里找到答案: 将字符串转换为js日期

用“ - ”替换“。”以验证日期。

编辑:这是在JavaScript中完成的,Jquery没有日期实用程序函数


1
你是在指日期选择器吗?如果是的话,那么我很抱歉误导了你,我以为他想要一个不涉及日期选择器的自定义解决方案。 - ThunD3eR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接