【问题标题】:unable to save the exact date in database无法在数据库中保存确切的日期
【发布时间】:2018-08-17 16:44:59
【问题描述】:

我已多次尝试存储我选择的确切日期。但保存时,会取上一个日期。我已经以多种方式进行了测试,角度文件将通过相同的选定日期。当执行 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" );

【问题讨论】:

  • 你的 $dateMainDomain 值是多少?
  • 抱歉,这是保存时的值,2018 年 3 月 2 日星期五 00:00:00 GMT+0530(印度标准时间)
  • 会不会是您的数据库服务器时间没有按照您的意愿设置?只是猜测。
  • 你可以包含错误吗?或者如果您检查错误发生的位置可能会有所帮助,请尝试检查您的客户端是否是有效的日期对象,并为数据库检查列中的数据类型
  • 在保存或从表中获取日期时,我实际上没有收到任何错误。但它会采取不正确的日期。列类型为日期时间

标签: php html angularjs


【解决方案1】:

你需要一个有效的日期让数据库接受它,格式化你的日期对象

        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));

【讨论】:

    【解决方案2】:

    对我来说听起来像是时区问题。

    我猜在角度方面是浏览器的本地时区。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2013-04-20
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多