【发布时间】:2017-05-09 20:08:40
【问题描述】:
我正在尝试使用 MomentJS 时区将用户输入的时间从本地时间转换为 GMT+1,但是,我以前从未使用过这个库,文档让我很困惑。
我的表单使用 Bootstrap Datepicker 和 Bootstrap timepicker 创建用于输入事件日期和时间的 UI,如下所示:
<label>Date:</label>
<input type="text" id="dteDay">
<input type="hidden" id="iptDate">
<label>Time (GMT+1 only):</label>
<input id="iptTime" type="text">
<script>
$("#dteDay").datepicker({
format: "dd/mm/yyyy",
todayBtn: "linked",
todayHighlight: true,
startDate: "-2d",
endDate: "+0d",
});
$('#iptTime').timepicker({
minuteStep: 5,
showMeridian: false
});
</script>
然后我使用这个函数来收集日期和时间发送到一个 PHP 文件,像这样:
function CreateReport(){
if( $("#sltMyName").select2("val") == null ){
ShowError("Please Enter Your Name!");
}
else if( $("#sltTheirName").select2("val") == null ){
ShowError("Please Enter Their Name!");
}
else if( $("#dteDay").val() == "" ){
ShowError("Please Enter the Date of Incident!");
}
else if( $("#iptTime").val() == "" ){
ShowError("Please Enter the Time of Incident!");
}
else if( $("#txtStory").val() == "" ){
ShowError("Please Enter the Full Story!");
}
else if( $("#txtEvidence").val() == "" ){
ShowError("Please List your Evidence");
}
else{
if( $("#sltOffence").val() == "Other" && $("#iptOtherOffence").val() == ""){
ShowError("Please Enter Offence");
}
else if( $("#sltOffence").val() == "Other" ){
var Offence = $("#iptOtherOffence").val();
}
else{
var Offence = $("#sltOffence").val();
}
$.post(
'includes/complaint/index.php',
{
Server: $("#sltServerRegion").val(),
MyName: JSON.stringify($("#sltMyName").select2("val")),
TheirName: JSON.stringify($("#sltTheirName").select2("val")),
Date: $("#dteDay").val(),
Time: $("#iptTime").val(),
Offence: Offence,
Story: $("#txtStory").val(),
Evidence: $("#txtEvidence").val(),
RefundAmount: $("#iptRefundAmount").val(),
RefundPreference: $("#sltRefundPreference").val()
},
function(data){
returnValue = JSON.parse(data);
if( returnValue["data"] == 1){
window.location.href = returnValue["url"];
}
else{
ShowError(returnValue["msg"]);
}
}
);
}
}
我需要做的是将输入的时间更改为 GMT+1(或者最好是夏天的 GMT+2),以匹配我们其他系统使用的时间。
我了解 MomentJS 时区可以将日期转换为特定时区,如下所示:
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
newYork.format(); // 2014-06-01T12:00:00-04:00
虽然我不太了解。它将它从什么(即 GMT+1)转换为 New_York?
简而言之,我如何将用户输入的时间从本地时间转换为 GMT+1(或夏季 GMT+2,如果可能),然后将它们拆分以传递给 AJAX 函数?
提前致谢。
【问题讨论】:
-
如果可能,“或在夏季 GMT+2”是什么意思?
-
当我们从 GMT+1 更改为 GMT+2 时,时钟前进一小时。
-
此更改是隐式的。当时钟前进一小时时,它们会在整个世界中前进。因此,如果您检索带有时区的当前日期并将其转换为另一个时区,他们已经将这个更改带回来
-
我猜。老实说,时区“科学”让我感到困惑。
-
@quirimmo - 不,他们绝对不会在全世界前进。世界很复杂,世界各地的时区差异很大。许多国家/地区不使用夏令时,而使用夏令时的国家则略有不同。
标签: javascript timezone momentjs