如何从输入控件中获取格式化日期?

时间:2018-10-17 14:54:00

标签: jquery

我隐藏了日期字段的输入控件,其中值来自数据库:

<input data-val="true" data-val-date="The field Appointment Date must be a date." id="AppointmentDate" name="AppointmentDate" type="hidden" value="10/17/18 12:00:00 AM">

和jQuery代码从该控件获取日期:

var appointmentdate = $('input#AppointmentDate').val();
alert(appointmentdate); // 10/17/18 12:00:00 AM

我得到的值是“ 10/17/18 12:00:00 AM”。我们需要的只是格式为MM / dd / yyyy->“ 10/17/2018”的日期值。

我尝试搜索stackoverflow,但是大多数情况是不同的,其中日期值是实际的日期对象,这使格式化更加容易。就我而言,日期值为字符串?因此,以下jQuery代码不起作用:

var yyyy = appointmentdate.getFullYear();

2 个答案:

答案 0 :(得分:2)

  

我尝试搜索stackoverflow,但是大多数情况是不同的,其中日期值是实际的日期对象,这使格式化更加容易。在我的情况下,日期值是字符串吗?

您的研究是正确的,因为格式化来自Date对象的日期格式比从字符串中格式化日期要容易得多。这样,您可以使用Date对象构造函数很容易地转换字符串。从那里可以拉出日期的必需部分以形成必需的格式:

var date = new Date($('#AppointmentDate').val());
var formatted = ('00' + date.getDate()).slice(-2) + '/' + ('00' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear();

console.log(formatted);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-val="true" data-val-date="The field Appointment Date must be a date." id="AppointmentDate" name="AppointmentDate" type="hidden" value="10/17/18 12:00:00 AM">

请注意,您必须在1上添加getMonth(),因为它会返回从零开始的月份数字。

答案 1 :(得分:1)

这是正确的方法... 其他答案并不能完全解决问题。他们打印日期格式为mm / dd / yyyy,但问题是关于MM / dd / yyyy。 即mm / dd为3/31,MM / dd为03/31

var date = new Date($('#AppointmentDate').val());
var formatDate =getFormattedDate(date);
console.log(formatDate);

function getFormattedDate(date) {
  var year = date.getFullYear();

  var month = (1 + date.getMonth()).toString();
  month = month.length > 1 ? month : '0' + month;

  var day = date.getDate().toString();
  day = day.length > 1 ? day : '0' + day;
  
  return month + '/' + day + '/' + year;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-val="true" data-val-date="The field Appointment Date must be a date." id="AppointmentDate" name="AppointmentDate" type="hidden" value="10/17/18 12:00:00 AM">