# Need Help With Date Function

**URL:** <https://forum.freecodecamp.org/t/need-help-with-date-function/150450>\
**Category:** General\
**Created:** [September 29, 2017, 6:37am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450 "2017-09-29T06:37:07Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![amitshrivastavafcc](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/amitshrivastavafcc/32/65932_2.png) [@amitshrivastavafcc](https://forum.freecodecamp.org/u/amitshrivastavafcc)\
**Post date:** [September 29, 2017, 6:37am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/1 "2017-09-29T06:37:08Z")

</div>

Hi,

I am creating a form where i am taking input from user birth details , including time, now i want to create a date object like -

`var d = new Date("2015-03-25T12:00:00Z");`

I have been able to achieve every thing in terms of getting hour , weekday, etc but cannot seem to add “T12:00:00Z” to achieve my time aspect when i try and add it gives an error , i am getting my hour and minute via -

```auto
var testHour = document.setHoursMinutes.hour.value; //// here setHoursMinutes are dropdown names etc
var testMinute = document.setHoursMinutes.minute.value;

```

Below is my function code kindly guide how i can achieve this … Thanks

```auto

function getDateInfo() {
   var a = document.selectDate.month.value; //// Month DropDown
   var c = document.selectDate.year.value; ///// year text box
   var b = document.selectDate.day.value; ////Day Drop Dwn
   var testHour = document.setHoursMinutes.hour.value; /////Hour text box
   var testMinute = document.setHoursMinutes.minute.value; //// Minute text box
    document.displayInfo.month.value=document.selectDate.month.value; //// Month Drop Down
		 
    document.displayInfo.day.value=document.selectDate.day.value;		
    var daysArr = ['Sunday','Moday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
    var dateStr = c + "-" + a + "-" + b; /////Here is my issue, i cannot seem to add T12:00:00Z where 12 is my hour and 00 my minute value
   
    var newDate = new Date(dateStr); /// This date object i want to be like **new Date("2015-03-25T12:00:00Z");**

    var dayNo = newDate.getDay();

    var disDay = daysArr[dayNo];

   document.displayInfo.weekDay.value=disDay;	

   document.displayInfo.fullYear.value=document.selectDate.year.value;	

  
    
    
}

```

---

<div class="post-metadata">

**Author:** ![DanCouper](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dancouper/32/158608_2.png) [@DanCouper](https://forum.freecodecamp.org/u/DanCouper)\
**Post date:** [September 29, 2017, 6:45am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/2 "2017-09-29T06:45:47Z")

</div>

Verbose but intent is clear:

```auto
function createUserBirthDate(y,m,d,hr,min) {
  var userBirth = new Date();
  userBirth.setFullYear(y);
  userBirth.setMonth(m);
  userBirth.setDate(d);
  userBirth.setHours(hr);
  userBirth.setMinute(min);

  return userBirth;
}

```

The `Date` object has get and set functions that modify it: [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)

---

<div class="post-metadata">

**Author:** ![amitshrivastavafcc](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/amitshrivastavafcc/32/65932_2.png) [@amitshrivastavafcc](https://forum.freecodecamp.org/u/amitshrivastavafcc)\
**Post date:** [September 29, 2017, 7:20am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/3 "2017-09-29T07:20:13Z")

</div>

Hi @DanCouper , Thanks as per your suggestion i tried to set the values and then get them and pass them on but i keep getting invalid date error … below is my code kindly guide where i am wrong —

```auto

function getDateInfo() {
   
    var daysArr = ['Sunday','Moday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
    
    var userBirth = new Date();
    var y = document.selectDate.year.value;
    userBirth.setFullYear(y);
    var m = document.selectDate.month.value;
    userBirth.setMonth(m);
    var date1 = parseInt(document.selectDate.day.value);
   
    userBirth.setDate(date1);
    
    var hr = parseInt(document.setHoursMinutes.hour.value);
    userBirth.setHours(hr);
     
    var min = parseInt(document.setHoursMinutes.minute.value);
    userBirth.setMinutes(min);
  
    var getDay = userBirth.getDay();
    var disWeekDay = daysArr[getDay];
    var disYear = userBirth.getFullYear();
    var disMonth = userBirth.getMonth();
    var disDay = userBirth.getDay();
    
    
    /////-----Dispaly values
    
    document.displayInfo.month.value=disMonth; 
	document.displayInfo.day.value=disDay;
	document.displayInfo.weekDay.value=disWeekDay;
	document.displayInfo.fullYear.value=disYear;
    
   
}

```

---

<div class="post-metadata">

**Author:** ![DanCouper](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dancouper/32/158608_2.png) [@DanCouper](https://forum.freecodecamp.org/u/DanCouper)\
**Post date:** [September 29, 2017, 7:35am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/4 "2017-09-29T07:35:34Z")

</div>

Do you have this up somewhere like CodePen?

---

<div class="post-metadata">

**Author:** ![amitshrivastavafcc](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/amitshrivastavafcc/32/65932_2.png) [@amitshrivastavafcc](https://forum.freecodecamp.org/u/amitshrivastavafcc)\
**Post date:** [September 29, 2017, 7:42am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/5 "2017-09-29T07:42:15Z")

</div>

@DanCouper - Thanks , i was making a mistake of trying to enter August as string rather then month number as the argument needs to be number , i created a switch and it solved the problem … Thank you so much for letting me know about these methods , i can now code much better with date to some extend …

Below is updated code …

```auto

function getDateInfo() {
   
    var daysArr = ['Sunday','Moday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
    
    var userBirth = new Date();
    var y = document.selectDate.year.value;
    userBirth.setFullYear(y);
    
    var m = document.selectDate.month.value;
    switch (m) {
        case "January" :
          userBirth.setMonth(0);
            break;
            
            case "February" :
          userBirth.setMonth(1);
            break;
            
            case "March" :
          userBirth.setMonth(2);
            break;
            
            case "April" :
          userBirth.setMonth(3);
            break;
            
            case "May" :
          userBirth.setMonth(4);
            break;
            
            case "June" :
          userBirth.setMonth(5);
            break;
            
            case "July" :
          userBirth.setMonth(6);
            break;
            
            case "August" :
          userBirth.setMonth(7);
            break;
            
            case "September" :
          userBirth.setMonth(8);
            break;
            
            case "October" :
          userBirth.setMonth(9);
            break;
            
            case "November" :
          userBirth.setMonth(10);
            break;
            
            case "December" :
          userBirth.setMonth(11);
            break;
            
            
    }
    
  
    var date1 = parseInt(document.selectDate.day.value);
   
    userBirth.setDate(date1);
    
    var hr = parseInt(document.setHoursMinutes.hour.value);
    userBirth.setHours(hr);
     
    var min = parseInt(document.setHoursMinutes.minute.value);
    userBirth.setMinutes(min);
  
    var getDay = userBirth.getDay();
    var disWeekDay = daysArr[getDay];
    var disYear = userBirth.getFullYear();
    var disMonth = m;
    var disDay = userBirth.getDay();
    
    alert(userBirth);
    /////-----Dispaly values
    
    document.displayInfo.month.value=disMonth; 
	document.displayInfo.day.value=disDay;
	document.displayInfo.weekDay.value=disWeekDay;
	document.displayInfo.fullYear.value=disYear;
    
   
}

```

---

<div class="post-metadata">

**Author:** ![DanCouper](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dancouper/32/158608_2.png) [@DanCouper](https://forum.freecodecamp.org/u/DanCouper)\
**Post date:** [September 29, 2017, 8:15am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/6 "2017-09-29T08:15:07Z")

</div>

👍 You can shrink that down by

```auto
['January','February',...rest of months].indexOf(month);

```

Rather than the switch

---

<div class="post-metadata">

**Author:** ![ppc](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ppc/32/63349_2.png) [@ppc](https://forum.freecodecamp.org/u/ppc)\
**Post date:** [September 29, 2017, 10:37am UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/7 "2017-09-29T10:37:28Z")

</div>

you may want to look at various html date and time inputs

```auto
<input id=dob type=datetime-local>

```

> **[\<input type="datetime-local"\>](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local)**
>
> input elements of type datetime-local create input controls that let the user easily enter both a date and a time, including the year, month, and day as well as the time in hours and minutes. The user's local time zone is used.

---

<div class="post-metadata">

**Author:** ![DanCouper](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/dancouper/32/158608_2.png) [@DanCouper](https://forum.freecodecamp.org/u/DanCouper)\
**Post date:** [September 29, 2017, 2:24pm UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/8 "2017-09-29T14:24:28Z")

</div>

Date inputs flat out don’t work on Firefox or IE mind

---

<div class="post-metadata">

**Author:** ![Aaronms](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/aaronms/32/67097_2.png) [@Aaronms](https://forum.freecodecamp.org/u/Aaronms)\
**Post date:** [September 29, 2017, 11:56pm UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/9 "2017-09-29T23:56:03Z")

</div>

Dealing with dates in JS can be a pain.

depending on what you are doing, a utility library might save some time. These two are both excellent and worth looking at.

> **[Modern JavaScript Date Utility Library](https://date-fns.org/)**
>
> date-fns provides the most comprehensive yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.

[https://momentjs.com/](https://momentjs.com/)

---

<div class="post-metadata">

**Author:** ![ILM](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ilm/32/363239_2.png) [@ILM](https://forum.freecodecamp.org/u/ILM)\
**Post date:** [January 17, 2021, 8:38pm UTC](https://forum.freecodecamp.org/t/need-help-with-date-function/150450/10 "2021-01-17T20:38:39Z")

</div>


