javascriptdatedatetimedatetime-formatdatetimeoffset

JavaScript : How do i convert "4/10/2016, 4:00:00PM" to 4 PM?


How do I convert 4/10/2016, 4:00:00PM to 4 PM in JavaScript? Do I need to use substring or do we have any date method to do this conversion?

function myTime()
{
  var d1= document.getElementById("txtDate").value;
  var zOffset = document.getElementById("txtOffset").value;
  console.log("Date1",d1);

  var d2 = new Date(d1.replace(/ /g,'T'));
  var d3= d2.getTime()+(d2.getTimezoneOffset()*60000);
  console.log("Date2",d2);
  console.log("Date3",d3);
  
  var d4 = new Date(d3 + (3600000 * zOffset));
  console.log("Date3",d3);
  console.log("Date 4",d4);

  var d5 = d4.toLocaleString();
  console.log("Date 5",d5);

  d6 =d5.match(/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g).join(" ");
  console.log("Date6",d6)

  hourValue.innerHTML = d6.value;
}
<h1>TimeZone</h1>
<h2 id="hourValufe"></h2>
<table>
  <tr>
    <td>Date Time</td>
    <td><input type="text" id="txtDate" value="4/10/2016 10:00:00 PM" /></td>
  </tr>
  <tr><td>TimeZone</td></tr>
  <tr><td><input type="text" id="txtOffset" value="-5.00" /></td></tr>
  <tr><td><input type="submit" id="btnSubmit" value="Convert" onClick="myTime()" /></td></tr>
</table>


Solution

  • Try using String.prototype.match() with RegExp /(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g to match digit followed by ":" followed by digit followed by ":" followed by digit, or "A" through "Z" followed by end of input; Array.prototype.join() with space character " " as parameter

    var date = "4/10/2016, 4:00:00PM";
    var res = date.match(/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g);
    document.body.textContent = res.join(" ");