Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript创建不存在的日期_Javascript_Jquery_Date - Fatal编程技术网

Javascript创建不存在的日期

Javascript创建不存在的日期,javascript,jquery,date,Javascript,Jquery,Date,我写了一些JS,试图找出用户选择的月份的最后一个日期,我试图弄明白为什么会出现不存在的日期,比如2015年6月31日,问题可能是我如何计算月末,但我只是看不到我的方法来得出正确的结论。这是一个有趣的错误,所以我想看看你们是否有解决方案 var ealiest_effective_date = new Date(Date.parse("#{ruby_earliest_time_which_is_confirmed_correct.try(:strftime, "%m/%d/%Y")}")); va

我写了一些JS,试图找出用户选择的月份的最后一个日期,我试图弄明白为什么会出现不存在的日期,比如2015年6月31日,问题可能是我如何计算月末,但我只是看不到我的方法来得出正确的结论。这是一个有趣的错误,所以我想看看你们是否有解决方案

var ealiest_effective_date = new Date(Date.parse("#{ruby_earliest_time_which_is_confirmed_correct.try(:strftime, "%m/%d/%Y")}"));
var minimumtime = Date.parse(new Date(ealiest_effective_date.getFullYear(), ealiest_effective_date.getMonth() + 2, 0));

$('.selected-date').change(function (e) {
    date = Date.parse($(this).val());
    user_selected_date = new Date(date);

    console.log(user_selected_date.getMonth()+'/'+user_selected_date.getDate()+'/'+user_selected_date.getFullYear());

    var possibleResultantEndOfMonth = Date.parse(new Date(user_selected_date.getFullYear(), user_selected_date.getMonth() + 2, 0));
    var terminationEndOfMonth = new Date(Math.max(possibleResultantEndOfMonth,minimumtime));
    var end_of_month_date = terminationEndOfMonth.getMonth()+'/'+terminationEndOfMonth.getDate()+'/'+terminationEndOfMonth.getFullYear();

    $('#should_be_end_of_month').val(effective_date);
 });

我不知道您的逻辑或计算,但当使用JavaScript处理日期时,我强烈建议使用它,它允许以一种简单的方式进行日期操作,还允许处理时区。看看吧,我想它能帮你

d = moment("20150231", "YYYYMMDD")
d.isValid()
false
moment("20150228", "YYYYMMDD").isValid()
true

我不知道您的逻辑或计算,但当使用JavaScript处理日期时,我强烈建议使用它,它允许以一种简单的方式进行日期操作,还允许处理时区。看看吧,我想它能帮你

d = moment("20150231", "YYYYMMDD")
d.isValid()
false
moment("20150228", "YYYYMMDD").isValid()
true

除非您之前已声明,否则您的变量为:

var ealiest_effective_time
但你指的是:

ealiest_effective_date

除非您之前已声明,否则您的变量为:

var ealiest_effective_time
但你指的是:

ealiest_effective_date
.getMonth JavaScript方法将月份作为基于零的值返回。例如,一月是0,十二月是11。在您的示例中,2015年6月31日实际上应该是7月31日,而不是6月31日

我也会小心使用下面的代码

date = Date.parse($(this).val());
它可能不适用于具有不同区域设置的人

.getMonth JavaScript方法将月份作为零基值返回。例如,一月是0,十二月是11。在您的示例中,2015年6月31日实际上应该是7月31日,而不是6月31日

我也会小心使用下面的代码

date = Date.parse($(this).val());

它可能不适用于具有不同区域设置的人

只要我为网络更换变量。这不是问题,但无论如何要投票!只要我为网络更换变量。这不是问题,但无论如何要投票!同意。迄今为止最好的图书馆与日期和本地化工作达成一致。迄今为止,与日期和本地化相关的最佳图书馆奖得主!为什么日期以0为基础?!胜利者!为什么日期以0为基础?!