使用PHP将Javascript时间转换为MySQL格式
Convert Javascript time to MySQL format using PHP
如何使用php将js日期(如Sun Jul 13 2014 07:00:00 GMT+0200 (EET)
)转换为MySQL格式(如2014-07-13 07:00:00
) ?
由于日期字符串已经包含时区,因此不需要做任何特殊操作:
$when = new DateTime('Sun Jul 13 2014 07:00:00 GMT+0200 (EET)');
echo $when->format('Y-m-d H:i:s');
正如在注释中所指出的,这个字符串实际上包含两个时区信息,UTC + 2和EET(东欧时间),PHP基本上忽略了第二个。在这个例子中可以更好地发现:
var_dump(new DateTime('Sun Jul 13 2014 07:00:00 GMT+0200 (EET)'), DateTime::getLastErrors());
var_dump(new DateTime('Sun Jul 13 2014 07:00:00 GMT+0200'), DateTime::getLastErrors());
var_dump(new DateTime('Sun Jul 13 2014 07:00:00 (EET)'), DateTime::getLastErrors());
object(DateTime)#1 (3) {
["date"]=>
string(26) "2014-07-13 07:00:00.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+02:00"
}
array(4) {
["warning_count"]=>
int(1)
["warnings"]=>
array(1) {
[34]=>
string(29) "Double timezone specification"
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2014-07-13 07:00:00.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+02:00"
}
array(4) {
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2014-07-13 07:00:00.000000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(3) "EET"
}
array(4) {
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
}
我们实际上需要去掉其中一个,例如:
$js_date_string = 'Sun Jul 13 2014 07:00:00 GMT+0200 (EET)';
// Regular expression is shown for illustration purposes, it's probably wrong!
$tmp_date_string = preg_replace('/ GMT'+'d{4}/ui', '', $js_date_string);
$when = new DateTime($tmp_date_string);
var_dump($when, DateTime::getLastErrors());
echo $when->format('Y-m-d H:i:s');
object(DateTime)#1 (3) {
["date"]=>
string(26) "2014-07-13 07:00:00.000000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(3) "EET"
}
array(4) {
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
}
2014-07-13 07:00:00
我会尽量加强@akuzminsky的回答。由于date_parse
内部使用strtotime
来解析日期,您可以直接使用它,使您的代码更灵活。
有一个小缺点,因为您需要设置时区,以便正确使用date
并避免php警告。我将其设置为Europe/Athens
,但你可以在这里找到所有可用的代码。
date_default_timezone_set("Europe/Athens");
$unixTimeStamp = strtotime("Sun Jul 13 2014 07:00:00 GMT+0200 (EET)");
$newFormat = date('Y-m-d H:i:s', $unixTimeStamp );
echo $newFormat;
以秒为单位得到这个时间。除以1000可以去掉毫秒数
var time = new Date().getTime() / 1000
PHP:使用从JS返回的整数值
的时间$time = gmdate('H:i:s', time)
<?php
print_r(date_parse("Sun Jul 13 2014 07:00:00 GMT+0200"));
?>
Array
(
[year] => 2014
[month] => 7
[day] => 13
[hour] => 7
[minute] => 0
[second] => 0
[fraction] => 0
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] => 1
[zone_type] => 1
[zone] => -120
[is_dst] =>
[relative] => Array
(
[year] => 0
[month] => 0
[day] => 0
[hour] => 0
[minute] => 0
[second] => 0
[weekday] => 0
)
)
相关文章:
- Mysql日期时间字符串格式为angularjs中的可读日期
- mysql时间戳格式的Javascript regex不起作用
- 使用Javascript将MySQL日期格式转换为DD/MM/YY日期格式
- MySQL INSERT 命令正在将输入转换为不同的格式/值
- 使用Flot、JSON和MySQL的X轴日期格式
- 如何使用前端jQuery更改MySQL日期格式
- AngularJS 之间的管理时间格式 - MySQL.
- 将javascript日期正确格式化为MySQL
- pickadate.js-3.5.3 将字符串日期转换为 mysql DATE 的正确格式
- MySQL 查询中的日期格式添加额外的小时数
- MySQL中用于AngularJS日期过滤器过滤的日期格式
- 以特定格式将数组保存到MySQL
- 如何在JavaScript中将MySQL的DATETIME值转换为json格式
- MySQL格式的节点JavaScript时间戳
- 格式momentjs datetime存储在mysql (utc格式)本地日期时间
- 使用PHP将Javascript时间转换为MySQL格式
- 使用JSON格式的Node.JS从MySQL检索数据
- 如何在PHP中将MYSQL日期字段转换为以下格式
- 获取字符串格式的MySQL存储数组并转换为JSON对象的数组
- 以mysql格式获取不同时区的UTC时间