如果我有以下内容:
var day = '29';
var month = '12';
var year = '2015';
var created_date = new Date(year, month, year); // first
var created_date = new Date(parseInt(year), parseInt(month), parseInt(year)); // second
我可以按照" 第一次"中所述创建新日期线?或者我需要首先解析字符串中的整数,因为它显示在" second "线?
提前谢谢。
答案 0 :(得分:4)
new Date("2015", "11", "23") // This work perfect, but it should be yy, mm, dd and not yy, mm, yy
答案 1 :(得分:2)
除了必须-1
到月份
var day = '29';
var month = '12';
var year = '2015';
var created_date = new Date(year, month-1, day);
这将正常工作。
您知道,您已将year
输入day
的{{1}}参数
答案 2 :(得分:1)
var day = '29';
var month = '12';
var year = '2015';
var month1=parseInt(month)-1;
var created_date = new Date(year, month1.toString(), day);
console.log(created_date);
var created_date1 = new Date(parseInt(year), month1, parseInt(day));
console.log(created_date1);
这两个陈述都是正确的,以便获得新的日期,但新的Date()内的格式;应该是yy,mm,dd,而不是yy,mm,yy
答案 3 :(得分:0)
日期参数为:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
要记住的唯一警告是1月份是0月份 因此,如果用户输入12月12或10月10,则减去1。
要记住的另一个警告是,日期可能会意外地发生变化。
执行new Date(2012,1,31)
将导致3月31日而不是2月31日(因为它只有28/29天)。所以总要做一些健全检查。
至于你的第二个问题:
Javascript类型不安全。
在输入Date对象时, "22"
与22
相同。
1 == true
,0 == false
,"1" == 1 == true
等。这里和那里有一些警告。但通常情况下,对于类型转换不是必需的。
1 + true
= 2
" 22" /4+0.5 = 6
等等。只有在javascript明显无法解决的情况下(例如添加字符串数"22"+1
= "221"
),您才应该进行明确的类型转换。或者当你需要某些东西时。这是在字符串以数字开头但不包含数字字符的情况下。与"22"
类似,将被视为一个数字,但"22foo"
将是一个字符串。您需要将其显式转换为整数以获取数字。 parseInt('22foo')
会产生22
。
对用户输入进行健全性测试始终是一种很好的做法。变量是我期望的变量。使用整数,如果用户有机会输入其他字符,则使用isNaN函数进行测试是明智的。
您可以使用javascript的is Not A Number函数来测试字符串是否为纯。 isNaN('22')
将返回false
,因为问题的答案"不是数字"是否定的。 isNaN('22foo')
将返回true
。扭曲逻辑的一点点。我发现记住这个特殊功能是一个让我保持理智的问题很有用: - )
与"22foo" + 2
一样会变为"22foo2"
。因此,parseInt("22foo")+2
会产生所需的24
输出。