JavaScript 从当地午夜获取 UTC
JavaScript get UTC from local midnight
我有一个来自 Bootstrap DateTimePicker $('#datetimepicker').find("input").val()
的日期,格式为“mm/dd/yyyy”。
<div class='input-group date' id='datetimepicker'>
<form autocomplete="off" onkeydown="return event.key != 'Enter';">
<input type='text' autofill="off" readonly class="form-control" />
</form>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
我正在尝试使用 Moment js
:
获取选定日期午夜的 UTC 日期和时间
moment.utc($('#datetimepicker').find("input").val()).tz(timezone).format('YYYY-MM-DD HH:mm:ss')
例如,选择器的开始日期是 01/21/2022
,timezone
是 America/Phoenix
,即 UTC-7
。
我应该有 2022-01-21 07:00:00
但我的代码 returns 2022-01-20 17:00:00
.
我做错了什么?有没有办法只知道时区就可以在 00:00 时间获取一天的 UTC 时间?
您必须先创建本地时区的时间戳,然后将其转换为 UTC。你正在做相反的事情。也就是说,如果我拆分您的代码片段,您将执行以下操作
let thedate = $('#datetimepicker').find("input").val();
let utcdate = moment.utc(thedate);
let localdate = utcdate.tz(timezone);
因此,时区偏移当然是按错误的方向添加的...
尝试以下方法
function getTime() {
let thedate = $('#thedate').val();
console.log(thedate)
// create a timestamp in the respective timezone
let localdate = moment.tz(thedate, "America/Phoenix");
// convert it to utc
let utcdate = localdate.utc();
// format the timestamp
console.log(utcdate.format("YYYY-MM-DD HH:mm:ss"));
}
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="thedate" type="date">
<input type="button" onClick="getTime()" value="Get Time">
我有一个来自 Bootstrap DateTimePicker $('#datetimepicker').find("input").val()
的日期,格式为“mm/dd/yyyy”。
<div class='input-group date' id='datetimepicker'>
<form autocomplete="off" onkeydown="return event.key != 'Enter';">
<input type='text' autofill="off" readonly class="form-control" />
</form>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
我正在尝试使用 Moment js
:
moment.utc($('#datetimepicker').find("input").val()).tz(timezone).format('YYYY-MM-DD HH:mm:ss')
例如,选择器的开始日期是 01/21/2022
,timezone
是 America/Phoenix
,即 UTC-7
。
我应该有 2022-01-21 07:00:00
但我的代码 returns 2022-01-20 17:00:00
.
我做错了什么?有没有办法只知道时区就可以在 00:00 时间获取一天的 UTC 时间?
您必须先创建本地时区的时间戳,然后将其转换为 UTC。你正在做相反的事情。也就是说,如果我拆分您的代码片段,您将执行以下操作
let thedate = $('#datetimepicker').find("input").val();
let utcdate = moment.utc(thedate);
let localdate = utcdate.tz(timezone);
因此,时区偏移当然是按错误的方向添加的...
尝试以下方法
function getTime() {
let thedate = $('#thedate').val();
console.log(thedate)
// create a timestamp in the respective timezone
let localdate = moment.tz(thedate, "America/Phoenix");
// convert it to utc
let utcdate = localdate.utc();
// format the timestamp
console.log(utcdate.format("YYYY-MM-DD HH:mm:ss"));
}
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="thedate" type="date">
<input type="button" onClick="getTime()" value="Get Time">