如何格式化 Javascript 中的日期
How to format a Date in Javascript
我正在使用 bootstrap dateTimePicker。
因为 dateTimePicker 有效,输入需要采用以下格式:
30/07/2019 23:59:59
.
dateTimePicker 工作正常,我用这个函数初始化它,它按我想要的方式工作:
<div class="form-group">
<div class='input-group date' id='datetimepicker2'>
<input type='text' class="form-control " id="datepick2" name="transaction_date_from"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
var d = new Date();
$("#datetimepicker2").datetimepicker({
defaultDate: new Date(d.getFullYear(),d.getMonth(),d.getDate(),23,59,59,00),
format: 'DD/MM/YYYY HH:mm:ss',
sideBySide: true,
showTodayButton: true,
showClear: true,
});
$('#datetimepicker2').datetimepicker({format: 'LT'}).on('dp.show', function(event) {
$(".bootstrap-datetimepicker-widget").find('.btn[data-action="togglePeriod"]').hide();
});
我想要做的是我有一个 <button>
,当被点击时它必须恢复到 "defaultDate" dateTimePicker。
我试过的是:
var d = new Date();
var dateTo = new Date(d.getFullYear(),d.getMonth(),d.getDate(),23,59,59,00);
$("#datepick2").val(dateTo);
但我得到的不是与初始化 dateTimePicker 时相同的结果,而是
Tue Jul 30 2019 23:59:59 GMT+0200 (Ora legale dell’Europa centrale)
.
所以,我的问题是:如何根据需要设置日期格式?有没有可以做到的bootstrap函数?
有什么函数可以做到吗?我看过另一个问题,但它似乎没有回答我的问题。
使用原生 javascript 您必须手动将日期转换为所需的格式,例如
function formatMonth(month){
month +=1;
return month > 9 ? month : "0"+month;
}
const d = new Date();
const toDate = `${d.getDate()}/${formatMonth(d.getMonth())}/${d.getFullYear()} 23:59:59`
console.log(toDate)
然而,使用像 momentjs
这样的库会更容易、更易读
const dateFormat = 'DD/MM/YYYY HH:mm:ss';
console.log(moment().set({hours: 23, minutes: 59, seconds: 59}).format(dateFormat));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
仅仅为此使用库似乎有点矫枉过正,您可以使用 toLocaleString()
console.log(new Date().toLocaleString('en-US', {hour12: false}).replace(/,/, ''));
不过,如果您要进行大量时间操作,moment.js
是一个很棒的库。
通常情况下,我不提倡将包用于简单和良性的任务,但是当涉及到 JS 中的日期时间时,我强烈建议查看 date-fns 包。
它是 30kB/7kB package 并且涵盖了大部分(如果不是您的全部需求)。
how can i format the date as i want? Is there a bootstrap function that can do it?
对于您的特定格式,请查看其 format()
方法。你甚至可以在没有 importing/requiring 的情况下使用它!
这是一个 运行 演示:runkit/b2e2y529fo87
试试这个:
$('#setDate').click(function(){
$('.form_datetime').datetimepicker({ format: 'DD/MM/YYYY HH:mm:ss',defaultDate:new Date()})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.7.14/js/bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<button id="setDate">Init Date</button>
<input type="text" class="form_datetime"/>
我正在使用 bootstrap dateTimePicker。
因为 dateTimePicker 有效,输入需要采用以下格式:
30/07/2019 23:59:59
.
dateTimePicker 工作正常,我用这个函数初始化它,它按我想要的方式工作:
<div class="form-group">
<div class='input-group date' id='datetimepicker2'>
<input type='text' class="form-control " id="datepick2" name="transaction_date_from"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
var d = new Date();
$("#datetimepicker2").datetimepicker({
defaultDate: new Date(d.getFullYear(),d.getMonth(),d.getDate(),23,59,59,00),
format: 'DD/MM/YYYY HH:mm:ss',
sideBySide: true,
showTodayButton: true,
showClear: true,
});
$('#datetimepicker2').datetimepicker({format: 'LT'}).on('dp.show', function(event) {
$(".bootstrap-datetimepicker-widget").find('.btn[data-action="togglePeriod"]').hide();
});
我想要做的是我有一个 <button>
,当被点击时它必须恢复到 "defaultDate" dateTimePicker。
我试过的是:
var d = new Date();
var dateTo = new Date(d.getFullYear(),d.getMonth(),d.getDate(),23,59,59,00);
$("#datepick2").val(dateTo);
但我得到的不是与初始化 dateTimePicker 时相同的结果,而是
Tue Jul 30 2019 23:59:59 GMT+0200 (Ora legale dell’Europa centrale)
.
所以,我的问题是:如何根据需要设置日期格式?有没有可以做到的bootstrap函数?
有什么函数可以做到吗?我看过另一个问题,但它似乎没有回答我的问题。
使用原生 javascript 您必须手动将日期转换为所需的格式,例如
function formatMonth(month){
month +=1;
return month > 9 ? month : "0"+month;
}
const d = new Date();
const toDate = `${d.getDate()}/${formatMonth(d.getMonth())}/${d.getFullYear()} 23:59:59`
console.log(toDate)
然而,使用像 momentjs
const dateFormat = 'DD/MM/YYYY HH:mm:ss';
console.log(moment().set({hours: 23, minutes: 59, seconds: 59}).format(dateFormat));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
仅仅为此使用库似乎有点矫枉过正,您可以使用 toLocaleString()
console.log(new Date().toLocaleString('en-US', {hour12: false}).replace(/,/, ''));
不过,如果您要进行大量时间操作,moment.js
是一个很棒的库。
通常情况下,我不提倡将包用于简单和良性的任务,但是当涉及到 JS 中的日期时间时,我强烈建议查看 date-fns 包。
它是 30kB/7kB package 并且涵盖了大部分(如果不是您的全部需求)。
how can i format the date as i want? Is there a bootstrap function that can do it?
对于您的特定格式,请查看其 format()
方法。你甚至可以在没有 importing/requiring 的情况下使用它!
这是一个 运行 演示:runkit/b2e2y529fo87
试试这个:
$('#setDate').click(function(){
$('.form_datetime').datetimepicker({ format: 'DD/MM/YYYY HH:mm:ss',defaultDate:new Date()})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.7.14/js/bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<button id="setDate">Init Date</button>
<input type="text" class="form_datetime"/>