【发布时间】:2014-01-22 08:24:19
【问题描述】:
当用户根据他/她的时区使用 'input type=date name="date"' && 'input type=time name="time"' 标签输入日期和时间时,
例如:- 如果来自印度(亚洲/加尔各答)时区的用户输入日期:2014 年 1 月 22 日和时间:下午 5:30,我需要将其转换为 UTC 时间戳以将其存储到数据库,实现这一目标
我使用了以下代码:-
$year=substr($date,0,4);
$month=substr($date,5,2);
$day=substr($date,8);
$hour=substr($time,0,2);
$minute=substr($time,3);
$clientzone=mysql_result(mysql_query("select timezone from c_users_extra where c_id='{$_SESSION['clientid']}'"),0,0); //Fetches the timezone of user
date_default_timezone_set($clientzone);//Setting default timezone to client timezone
$datetime = new DateTime("$year-$month-$day $hour:$minute:00");
$la_time = new DateTimeZone('UTC');
$datetime->setTimezone($la_time);
$values=$datetime->format('Y-m-d H:i:s');
$year=substr($values,0,4);
$month=substr($values,5,2);
$hour=substr($values,11,2);
$minutes=substr($values,14,2);
$seconds=substr($values,17,2);
$timestamp=mktime($hour,$minutes,$seconds,$month,$day,$year);//creating new timestamp from coverted
print_r(getdate($timestamp));//Result : Array ( [seconds] => 0 [minutes] => 30 [hours] => 6 [mday] => 22 [wday] => 3 [mon] => 1 [year] => 2014 [yday] => 21 [weekday] => Wednesday [month] => January [0] => 1390372200 )
//Expected Result : Array ( [seconds] => 0 [minutes] => 0 [hours] => 12 [mday] => 22 [wday] => 3 [mon] => 1 [year] => 2014 [yday] => 21 [weekday] => Wednesday [month] => January [0] => 1390372200 )
为什么我得到这个错误的时间戳?
【问题讨论】:
-
抱歉,这太过分了,为什么要使用所有这些
substrs?什么时候可以直接获取这些值 -
[offtopic]当我看到通过
substr在 PHP 中获取日期的年/月/日时,我感觉自己很年轻...[/offtopic] 在您的问题中添加所需的结果跨度> -
从日期和时间输入标签中检索准确的值..
-
只是为了打个时间戳?当
DateTime对象offers that functionality? -
需要将用户输入的日期和时间从用户时区转换为UTC时区