如何格式化 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"/>