【问题标题】:Convert datetime to date and time format separately in JS在JS中分别将datetime转换为日期时间格式
【发布时间】:2020-02-20 09:43:47
【问题描述】:

目前我的日历有这个 html

<!--Grid column-->
<div class="col-md-6">
<div class="md-form mb-0">
    <input placeholder="Selected date" data-toggle="datepicker" type="text" id="myDate" name="myDate" class="form-control datepicker">
    <label for="myDate" id="dateLabel">Estimated Start Date</label>
</div>
</div>
 <!--Grid column-->

目前我有这个

var est_start_date = $(this).attr('data-esd');

以及我使用此代码将其放置到文本框的值

$('#myDate').val(est_start_date);

包含这样的值

如您所见,数据还包括时间

如何将日期时间格式化为类似MM/DD/YYYY

也将时间分隔成这种格式

【问题讨论】:

标签: javascript jquery


【解决方案1】:

使用它来将您的日期转换为所需的格式,

	function formatDate(date) {
		date = date.split(" ");
		let dateOne = date[0];
		let time = date[1];
		time = time.split(":");
		time.forEach((val,index)=>{
			if(val.length <2){
				val = "0" + val;
				time[index] = val;
			}
		})
		time = time.join(":");

		let str = `${dateOne}T${time}.000Z`;

		let offset = (new Date()).getTimezoneOffset()*60*1000;

		date = new Date( (new Date(`${dateOne}T${time}.000Z`)).getTime() + offset);

		const arr = [date.getMonth() + 1, date.getDate(), date.getFullYear()]
		var hours = date.getHours();
		var minutes = date.getMinutes();
		var ampm = hours >= 12 ? 'PM' : 'AM';
		hours = hours % 12;
		hours = hours ? hours : 12; // the hour '0' should be '12'
		minutes = minutes < 10 ? '0'+minutes : minutes;
		var strTime = hours + ':' + minutes + ' ' + ampm;
		var date = arr.join("/");
		return date + " " +strTime;
	}	

	let date = '2019-10-21 1:41:00';
	console.log(formatDate(date));

【讨论】:

    【解决方案2】:

    您可以使用 javascript 日期对象来获取所需的格式。用这个,

    function formatDate(date) {
    
    const arr = [date.getMonth() + 1, date.getDate(), date.getFullYear()]
      var hours = date.getHours();
      var minutes = date.getMinutes();
      var ampm = hours >= 12 ? 'PM' : 'AM';
      hours = hours % 12;
      hours = hours ? hours : 12; // the hour '0' should be '12'
      minutes = minutes < 10 ? '0'+minutes : minutes;
      var strTime = hours + ':' + minutes + ' ' + ampm;
      var date = arr.join("/");
      return date + " " +strTime;
    
    }
    
    console.log(formatDate(new Date));

    【讨论】:

    • date.getMonth is not a function
    • 首先使用$('#datepicker').val()从日期选择器获取日期格式的值,然后将此值传递给函数formatDate。如果您在字符串上调用getMonth,它将不起作用,它应该是javascript date object
    • let myDate = new Date(document.querySelector('#myDate').value) 然后拨打formatDate(myDate)
    • 问题是我正在获取此数据属性 var est_start_date = $(this).attr('data-esd'); 的值并放入日历,但 var est_start_date 包含类似 2019-10-21 1:41:00 的值,因为此数据属性值即将到来来自我数据库上的日期时间字段
    • @KingRG 我添加了一个新答案,希望它能回答你的问题
    【解决方案3】:

    让 date=new Date(document.querySelector('#myDate').value)

    日期部分 ===> date.toLocaleDateString() .

    时间部分 ====> date.toLocaleTimeString() 用于时间部分。

    从下面的答案:

    Split the date and time in two elements

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 2016-11-26
      • 2018-04-01
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多