Javascript方法新Date()

时间:2015-12-29 08:13:04

标签: javascript date

如果我有以下内容:

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 "线?

提前谢谢。

4 个答案:

答案 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 == true0 == 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输出。