Javascript 使用单独的日期和时间创建新的日期/时间

Javascript 使用单独的日期和时间创建新的日期/时间,javascript,date,reactjs,datetime,Javascript,Date,Reactjs,Datetime,我有一个表单设置,我从不同的输入框收集日期,从dif收集时间 var约会_日期=新日期(); var任命开始=新日期(“2017年4月24日星期一20:00:00 GMT-0400(美国东部时间)”; var任命=新日期(“2017年4月24日星期一21:30:00 GMT-0400(美国东部时间)”; 控制台日志(约会日期); 控制台日志(约会\启动); 控制台日志(约会结束); 让所选的日期=约会日期toString().split(“”).slice(0,1).join(“”), 所选日

我有一个表单设置,我从不同的输入框收集日期,从dif收集时间

var约会_日期=新日期();
var任命开始=新日期(“2017年4月24日星期一20:00:00 GMT-0400(美国东部时间)”;
var任命=新日期(“2017年4月24日星期一21:30:00 GMT-0400(美国东部时间)”;
控制台日志(约会日期);
控制台日志(约会\启动);
控制台日志(约会结束);
让所选的日期=约会日期toString().split(“”).slice(0,1).join(“”),
所选日期=约会日期toString().split(“”).slice(1,2).join(“”),
所选的月=约会日期。toString().split(“”)。slice(2,3)。join(“”),
所选的年=约会日期toString().split(“”).slice(3,4).join(“”);
console.log(所选天数);
console.log(所选日期);
console.log(所选月份);
console.log(所选年份);
log(约会开始.toString().split(“”).slice(4,约会开始.toString().length).join(“”));
console.log(新日期(所选年、所选月、所选日期、约会开始.toString().split(“”).slice(4,约会开始.toString().length).join(“”));

日期的正确语法是
新日期(年、月、日、时、分、秒、毫秒)
所以你搞乱了提供的参数。

您选择的日期将产生日期名称。

日期的正确语法为
新日期(年、月、日、时、分、秒、毫秒)
所以你搞乱了提供的参数。
在您的案例中选择的日期将产生日期名称。

在您的代码中:

var appointment_date = new Date();
var appointment_start = new Date("Mon Apr 24 2017 20:00:00 GMT-0400 (EDT)");
var appointment_end = new Date("Mon Apr 24 2017 21:30:00 GMT-0400 (EDT)");
您不应该使用日期构造函数(或Date.parse)解析字符串,因为它在很大程度上依赖于实现。该标准不要求正确解析此格式的字符串。如果要创建一些测试日期,请使用:

var appointment_start = new Date(2017, 3, 24, 20);
假设你的时区是-0400。代码的第一部分可以重写为:

var约会_日期=新日期();
var任命=新日期(2017年3月24日20日);
var任命=新日期(2017年3月24日21日30日);
log(约会日期toString());
log(appointment_start.toString());
log(appointment_end.toString());
var days=['Sun'、'Mon'、'Tue'、'Wed'、'Thu'、'Fri'、'Sat'];
var selected_day=days[约会日期.getDay()],
所选日期=约会日期。getDate(),
所选月份=约会日期。getMonth()+1,
所选的\年=约会\日期。getFullYear();
console.log(所选天数);
console.log(所选日期);
console.log(所选月份);
console.log(所选年份)在您的代码中:

var appointment_date = new Date();
var appointment_start = new Date("Mon Apr 24 2017 20:00:00 GMT-0400 (EDT)");
var appointment_end = new Date("Mon Apr 24 2017 21:30:00 GMT-0400 (EDT)");
您不应该使用日期构造函数(或Date.parse)解析字符串,因为它在很大程度上依赖于实现。该标准不要求正确解析此格式的字符串。如果要创建一些测试日期,请使用:

var appointment_start = new Date(2017, 3, 24, 20);
假设你的时区是-0400。代码的第一部分可以重写为:

var约会_日期=新日期();
var任命=新日期(2017年3月24日20日);
var任命=新日期(2017年3月24日21日30日);
log(约会日期toString());
log(appointment_start.toString());
log(appointment_end.toString());
var days=['Sun'、'Mon'、'Tue'、'Wed'、'Thu'、'Fri'、'Sat'];
var selected_day=days[约会日期.getDay()],
所选日期=约会日期。getDate(),
所选月份=约会日期。getMonth()+1,
所选的\年=约会\日期。getFullYear();
console.log(所选天数);
console.log(所选日期);
console.log(所选月份);

console.log(所选年份)您是否有可能将代码简化为一个复制案例?获取从所有splits()和slices()返回的内容,并将它们放入变量中,然后继续。@CrescentFresh我添加了一段代码来说明我的问题。如果您看到最后一个
console.log
的输出,您将看到它是
null
它不清楚您在问什么。你能提供预期的输入和输出以及你得到的吗?代码片段没有运行,您似乎已经解决了复杂的问题。toString的输出完全依赖于实现,但您似乎将其视为具有标准格式。这似乎是@RobG的翻版,我编辑了我的答案以包含预期的输入/输出。我不认为这是一个重复的问题,你链接到;我希望我的编辑将有助于澄清这个问题,您是否有可能将代码简化为一个复制案例?获取从所有splits()和slices()返回的内容,并将它们放入变量中,然后继续。@CrescentFresh我添加了一段代码来说明我的问题。如果您看到最后一个
console.log
的输出,您将看到它是
null
它不清楚您在问什么。你能提供预期的输入和输出以及你得到的吗?代码片段没有运行,您似乎已经解决了复杂的问题。toString的输出完全依赖于实现,但您似乎将其视为具有标准格式。这似乎是@RobG的翻版,我编辑了我的答案以包含预期的输入/输出。我不认为这是一个重复的问题,你链接到;我希望我的编辑将有助于澄清这个问题。我按照你在代码片段中的建议更新了格式,但它仍然给我空值。对你有用吗?你的意思是我需要根据小时、分、秒等来分配时间吗?没有更好的方法吗?我按照您在代码段中建议的方式更新了格式,但它仍然给我空值。对你有用吗?你的意思是我需要根据小时、分、秒等来分配时间吗?难道没有更好的办法吗?