如何使用Javascript / JQuery将date_select值构造为单个日期格式?

时间:2016-02-04 21:23:59

标签: javascript jquery ruby-on-rails

我的html表单中有一个date_select。我知道它将日月和年分开。我正在尝试研究如何在我的Javascript中以YYYY-MM-DD格式构建日期,以便将此日期发送给我的控制器以与其他日期进行比较。

这是我到目前为止所做的(我是JQuery / JS初学者):

$(document).on('click', "#check-button", function(){

    var year = $("#event_day_1i").val();
    var month = $("#event_day_2i").val();
    var day = $("#event_day_3i").val();
    var selectedDate = [year + "-" + month + "-" + day];

...
$.ajax({
            url: '/events/check',
            data: {checkList: checkList , selected_date: selectedDate },
            method: "POST"
        }
    );
)};

但是这会创建诸如“2016-2-4”而不是“2016-02-04”的日期。解决这个问题的最佳方法是什么?

如果你有一个解决方案,允许我将3个单独的值发送到我的控制器中的日期,那么这也很棒,但我不知道我会怎么做(初学者)。

谢谢!

3 个答案:

答案 0 :(得分:3)

这个想法与@Phillip的回答相同。唯一的区别是整数计数和字符长度计数。

使用 parseInt()将其转换为整数。

使用长度来计算字符或字符串。

检查值是否为单个字符,然后追加" 0"对它,例如1将成为" 01"。

$(document).on('click', "#check-button", function(){

    var year = $("#event_day_1i").val();
    var month = $("#event_day_2i").val();
    var day = $("#event_day_3i").val();

    if (day.length < 2) { day = '0' + day; }
    if (month.length < 2) { month = '0' + month; }

    var selectedDate = [year + "-" + month + "-" + day];

...
    $.ajax({
            url: '/events/check',
            data: {checkList: checkList , selected_date: selectedDate },
            method: "POST"
        }
    );
)};

答案 1 :(得分:2)

另一种预先设置“0”的方法是使用以下内容(仅列出部分代码):

day = ("0" + day).slice(-2);

month = ("0" + month).slice(-2);

这样做是将“0”添加到开头,然后取最后两个字符。请注意,这种方式和其他方式都将这些值返回给字符串。

答案 2 :(得分:1)

首先,我要确保用户在每个字段中添加了一个数字。您可以自己进行更广泛的检查,但我已经开始使用.parseInt() JS方法了。

在该变量中有一个整数存储后,检查它是否小于10.也就是说,只有一位数。您可能还想检查它是否也大于0.

一旦你知道了,就把它前面的字符串“0”连接起来。即:9变为09

$(document).on('click', "#check-button", function(){

var year = $("#event_day_1i").val();
var month = $("#event_day_2i").val();
var day = $("#event_day_3i").val();
month = month.parseInt();
day = day.parseInt();

if (month < 10) {
    month = "0" + month;
}
if (day < 10) {
    day = "0" + day;
}
var selectedDate = [year + "-" + month + "-" + day];

...

$.ajax({
            url: '/events/check',
            data: {checkList: checkList , selected_date: selectedDate },
            method: "POST"
        }
    );
)};