我已多次尝试存储我选择的确切日期。但是在保存时,它将需要前一个日期。我已经在很多方面进行了测试,角度文件将通过相同的选定日期。执行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" );
答案 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模型日期)