我隐藏了日期字段的输入控件,其中值来自数据库:
<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();
答案 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">