0

I have two widgets. A calendar and a Time Widget.

My calendar is a DateTime object Wed Apr 29 2020 00:00:00 GMT-0400 and my time outputs this result 1:00 AM

I would like to Combine the two to make a new DateTime object. May I ask how about do I do that?

I tried this and it didn't work at all.

startDate.setTime(vm.startTime)
Harsh
  • 350
  • 1
  • 4
  • 13
Master
  • 2,038
  • 2
  • 27
  • 77

3 Answers3

0

I'm not sure but I think you want this. I hope I've been helpful

var startDate = { Date :"Wed Apr 29 2020 00:00:00 GMT-0400" };
var startTime  = { Time :"1:00 AM" };


var DateTime  = Object.assign(startDate, startTime);

console.log(DateTime);
// { Date: 'Wed Apr 29 2020 00:00:00 GMT-0400', Time: '1:00 AM' }

Edit:

var startDate = { Date :"Wed Apr 29 2020 00:00:00 GMT-0400" };
var startTime  = { Time :"1:00 AM" };

var DateTime = { DateAndTime: startDate.Date + " " + startTime.Time};

console.log(DateTime);
//{ DateAndTime: 'Wed Apr 29 2020 00:00:00 GMT-0400 1:00 AM' }
54ka
  • 3,501
  • 2
  • 9
  • 24
0

You need to iterate your Object entries and get values to combine them through an array.

 mergeDateTime() {
    const DateTime = {
      a: "Wed Apr 29 2020 00:00:00 GMT-0400",
      b: "1:00 AM",
    };

    const mergedDateTime = [];
    for (let [key, value] of Object.entries(DateTime)) {
      mergedDateTime.push(value);
    }
    return mergedDateTime;
  }
0

Try with splitting you time string and setting Hours value of your date object.

var startDate = "Wed Apr 29 2020 00:00:00 GMT-0400";
var startTime = "1:00 AM";

var result = new Date(startDate);

var hour = parseInt(startTime.split(":")[0]);
var minute = parseInt(startTime.split(":")[1].split(" ")[0]);
var amPmOffset = startTime.split(" ")[1] == "AM" ? 0 : 12;

result.setHours(hour, minute + amPmOffset, 0);

console.log(result.toString());
Karan
  • 12,059
  • 3
  • 24
  • 40