到达服务器时,请求json中的日期已更改

时间:2019-06-17 09:05:44

标签: java mysql angularjs angularjs-directive utc

我面对的是Angular js 1.x的奇怪问题, 我有很多日历可以选择日期。 rfs date只能正常工作,其余日期会在命中服务器时更改请求有效负载json。

这在我的本地计算机上工作正常,但在JST上却无法正常工作。 在我当地的2019-06-16T18:30Z [UTC]中保存为'2019-06-17 00:00:00',

但是在日本服务器中,它可以保存,因为它是2019-06-16T18:30:00:00。

  1. 我尝试发送硬编码日期,即2019-06-16T00:00Z [UTC],

但它也将转换为2019-06-16T18:30Z [UTC]

正在添加不必要的偏移量。

  1. 我试图将其进一步转换为UTC

    function convertDateToUTC(edate) { if(edate != undefined && edate != null) { var date = new Date(edate); return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + 1, 0, 0, 0); } else { return edate; } }

    vm.salesContract.contractStartDate = convertDateToUTC(vm.salesContract.contractStartDate);
    
  2. 也尝试过

    var dateoffset =“ T00:00:000Z”;

    vm.salesContract.contractStartDate = trimDate(vm.salesContract.contractStartDate)+ dateoffset;
    
    function trimDate(date) {
        if(date != null && date != undefined && date != '') {
            var date = new Date(date);
            return date.getFullYear() +"-"+(date.getMonth() + 1)+"-"+date.getDate();
        } else {
            return '';
        }
        }
    

HTML表单

<div class="form-group">
    <label class="control-label" 
    data-translate="inventoryApp.salesContract.rfs" 
    for="field_rfs">Rfs</label>
    <div class="input-group">
        <input id="field_rfs"
        type="text" class="form-control" 
        name="rfs" datetime-picker="{{'yyyy-MM-dd'}}" 
        ng-model="vm.salesContract.rfs" 
        is-open="vm.datePickerOpenStatus.rfs" 
        button-bar="vm.datePicker.buttonBar" enable-time="false" datepicker-options="vm.datePicker.options" 
        ng-disabled="vm.isEdit && vm.userconfigFlag"/>
            <span class="input-group-btn">
            <button type="button" class="btn btn-default" 
            ng-click="vm.openCalendar('rfs')">
                <i class="glyphicon glyphicon-calendar"></i>
            </button>
        </span>
    </div>
</div>

<div class="form-group">
    <label class="control-label" 
    data-translate="inventoryApp.salesContract.contractStartDate" 
    for="field_contractStartDate">Contract Start Date</label>
    <div class="input-group">
        <input id="field_contractStartDate" 
        type="text" class="form-control" 
        name="contractStartDate" datetime-picker="{{'yyyy-MM-dd'}}"
        ng-change="vm.changeContractTerm(vm.salesContract.contractStartDate)" 
        ng-model="vm.salesContract.contractStartDate" 
            is-open="vm.datePickerOpenStatus.contractStartDate" 
            button-bar="vm.datePicker.buttonBar" enable-time="false" 
            datepicker-options="vm.datePicker.options" 
            ng-disabled="vm.isEdit && vm.userconfigFlag"/>
            <span class="input-group-btn">
            <button type="button" class="btn btn-default" 
            ng-click="vm.openCalendar('contractStartDate')">
                <i class="glyphicon glyphicon-calendar"></i>
            </button>
        </span>
    </div>
</div>  

在js控制器中

SalesContract.update(vm.salesContract, onSaveSuccess, onSaveError);  

两个日期都应保存在db中,因为它们是从html表单中选择的。

保存在数据库中的当前值是:

rfs ='2019-06-17 00:00:00'和contractStartDate ='2019-06-16 20:30:00'

预期输出应保存

rfs ='2019-06-17 00:00:00'和contractStartDate ='2019-06-17 00:00:00

0 个答案:

没有答案