带有 NULL 时间的 Javascript Date() 对象

Ans*_*Kao 4 javascript time types date

有没有办法只指示 Date() 对象的日期部分,而不指示时间?

例如

var d = Date();
d.setFullYear(2015, 0, 13);
d.toString();

"Tue Jan 13 2015 00:00:00 GMT-0500 (EST)"  // Wrong - I didn't set a time!
"Tue Jan 13 2015     NULL GMT-0500 (EST)"  // Expected Result
Run Code Online (Sandbox Code Playgroud)

我希望能够区分仅输入日期部分的用户与明确输入日期和时间的用户之间的区别

And*_*gee 5

并不真地。JavascriptDate对象总是有时间的。如果您愿意,您可以在午夜离开它并忽略它,但它仍然存在。这取决于你如何解释它。

如果您希望能够表示空时间,您可以将午夜解释为这个意思,但您将无法表示实际上午夜的时间。如果您希望能够有一个空时间并且仍然代表每个可能的时间,您将需要有两个变量。

你可以有:

// Date with null time
var date = new Date(2015, 0, 13); // time component ignored
var time = null;

// Date with non-null time
var date = new Date(2015, 0, 13); // time component ignored
var time = new Date(1970, 0, 1, 9, 30); // date component ignored
Run Code Online (Sandbox Code Playgroud)

请注意,在第二个示例中,time组件中的年、月和日是任意的,不会被使用,但如果要创建Date对象,它们仍然需要存在。