无法在数据库中保存确切的日期

时间:2018-03-09 06:58:44

标签: php html angularjs

我已多次尝试存储我选择的确切日期。但是在保存时,它将需要前一个日期。我已经在很多方面进行了测试,角度文件将通过相同的选定日期。执行sql查询时,它将采用不正确的日期。有谁可以帮我解决这个问题?

以下是我的代码。 HTML代码:

     <td class="data_field">
         <input class="form-control" type="date" name="date_main_domain" ng-model="domain.date_main_domain" id="date_main_domain" required value="{{domain.date_main_domain}}">
     </td>

sql查询:

    $database->execute( "UPDATE domain_information SET date_main_domain='$dateMainDomain' WHERE id=$domainId" );

2 个答案:

答案 0 :(得分:2)

您需要数据库的有效日期才能接受它,格式化日期对象

        function formatDate(date) {
            var d = new Date(date),
                month = '' + (d.getMonth() + 1),
                day = '' + d.getDate(),
                year = d.getFullYear();

            if (month.length < 2) month = '0' + month;
            if (day.length < 2) day = '0' + day;

            return [year, month, day].join('-');
        }

        // date object to save
        var date = new Date(formatDate($scope.domain.date_main_domain));

答案 1 :(得分:0)

听起来像是时区问题。

我猜在角度方面,浏览器的本地时区被采用。

然后将其发送到服务器。根据我的经验,我会说它正在转换为一个utc时间,它代表与浏览器中的本地时间相同的时间。因此,例如,如果用户位于中国的12:00(UTC + 8),我猜04:00 UTC-0将被转移。

在服务器端,将设置日期。根据您在日期对象上调用的方法,您将看到utc-0或基于服务器时区的表示。

您应该分析请求中的日期,该日期会发送到服务器。如果您只是想要正确的一天并且不关心用户的本地时区,您可以在发送之前将日期的时区更改为前端的Utc-0。 (使用副本,以免影响ypur模型日期)