尝试使用 momentjs 设置日期格式 - 不起作用
Trying to set date format using momentjs - not working
目前我正在尝试使用 moment.js 计算他的天数,它工作正常但是当我尝试格式化日期时出现错误。
这是我的 jsfiddle link
$fromDate.datepicker().on('change', function () {
$toDate.datepicker('option', 'minDate', $(this).val());
$numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
$fromDate.format('YYYY-MMM-DD');
});
错误
TypeError: $fromDate.format is not a function
这是我正在寻找的日期格式 22-Nov-2021
$formDate
是一个 jQuery 对象,所以它不支持 format()
方法,它是 Moment 库的一部分。
要执行您需要的操作,您可以使用 jQueryUI 日期选择器库的 datFormat
参数来设置日期格式:
$(function() {
let $fromDate = $('#fromdate'),
$toDate = $('#todate'),
$numberDays = $('#numberdays');
$fromDate.datepicker({
dateFormat: 'yy-mm-dd'
}).on('change', function() {
$toDate.datepicker('option', 'minDate', $(this).val());
$numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
});
$toDate.datepicker({
dateFormat: 'yy-mm-dd'
}).on('change', function() {
$fromDate.datepicker('option', 'maxDate', $(this).val());
$numberDays.val(calculateDateDiff($(this).val(), $fromDate.val()));
});;
function calculateDateDiff(endDate, startDate) {
if (endDate && startDate) {
let e = moment(endDate),
s = moment(startDate);
return e.diff(s, "days");
}
return null;
}
});
.row {
background: #f8f9fa;
margin-top: 20px;
}
.col {
border: solid 1px #6c757d;
padding: 10px;
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script type="text/javascript" src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<div class="container">
<div class="row">
<div class="col-12 form-group has-feedback">
<label>From <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" id="fromdate" placeholder="YYYY-MM-DD" name="fromdate">
</div>
<div class="col-12 form-group has-feedback">
<label>To <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" id="todate" placeholder="YYYY-MM-DD" name="todate">
</div>
<div class="col-12 form-group has-feedback">
<label>Number of days <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" name="numberdays" id="numberdays" disabled>
</div>
</div>
</div>
目前我正在尝试使用 moment.js 计算他的天数,它工作正常但是当我尝试格式化日期时出现错误。
这是我的 jsfiddle link
$fromDate.datepicker().on('change', function () {
$toDate.datepicker('option', 'minDate', $(this).val());
$numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
$fromDate.format('YYYY-MMM-DD');
});
错误
TypeError: $fromDate.format is not a function
这是我正在寻找的日期格式 22-Nov-2021
$formDate
是一个 jQuery 对象,所以它不支持 format()
方法,它是 Moment 库的一部分。
要执行您需要的操作,您可以使用 jQueryUI 日期选择器库的 datFormat
参数来设置日期格式:
$(function() {
let $fromDate = $('#fromdate'),
$toDate = $('#todate'),
$numberDays = $('#numberdays');
$fromDate.datepicker({
dateFormat: 'yy-mm-dd'
}).on('change', function() {
$toDate.datepicker('option', 'minDate', $(this).val());
$numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
});
$toDate.datepicker({
dateFormat: 'yy-mm-dd'
}).on('change', function() {
$fromDate.datepicker('option', 'maxDate', $(this).val());
$numberDays.val(calculateDateDiff($(this).val(), $fromDate.val()));
});;
function calculateDateDiff(endDate, startDate) {
if (endDate && startDate) {
let e = moment(endDate),
s = moment(startDate);
return e.diff(s, "days");
}
return null;
}
});
.row {
background: #f8f9fa;
margin-top: 20px;
}
.col {
border: solid 1px #6c757d;
padding: 10px;
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script type="text/javascript" src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<div class="container">
<div class="row">
<div class="col-12 form-group has-feedback">
<label>From <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" id="fromdate" placeholder="YYYY-MM-DD" name="fromdate">
</div>
<div class="col-12 form-group has-feedback">
<label>To <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" id="todate" placeholder="YYYY-MM-DD" name="todate">
</div>
<div class="col-12 form-group has-feedback">
<label>Number of days <span class="text-danger">*</span></label>
<input type="text" class="form-control has-feedback-left" name="numberdays" id="numberdays" disabled>
</div>
</div>
</div>