当我使用Select r.* from (select * from results1 union select * from results2) r
left outer join procedures p on r.pid = p.id
功能显示日期时,它不符合当地时区。我希望它是根据当地时区。是否可以使用此函数的date()
参数完成?
实际上我不知道timestamp
参数是什么。如何使用它来改变日期和时间?
其次,还有其他功能可以根据我们的时区设置日期时间吗?
这是我尝试过但却无法正常工作的内容:
timestamp
答案 0 :(得分:3)
时间戳不过是Unix Time - 它在IT中广泛使用,它被定义为自00:00:00协调世界时(UTC)以来经过的秒数,星期四,1 1970年1月。
timestamp
函数的date
参数的默认值为time()
。如果不是根据您的时区,您应该使用date_default_timezone_set()
功能更改默认时区。 List of supported timezones
您可以在那里设置默认时区,而不是使用功能(如果您可以编辑php.ini
)。关于它的更多信息here。
此外,如果您运行PHP> = 5.2,最好使用DateTime
class。要在您的时区中获取当前日期,您可以使用以下两个参数创建新的DateTime object
:第一个是当前时间(您可以将其设置为now
并且它将起作用),其次是DateTimeZone object
timezone name作为参数,可用时区名称列表为available here。然后,您可以轻松地将其转换为所需的格式。例如:
$date = new DateTime( "now", new DateTimeZone( "America/Bogota" ) );
$date = $date->format( "Y-m-d H:i:s" );
echo $date; // prints: 2016-04-04 09:07:48
对于您的代码,请尝试:
date_default_timezone_set( "Asia/Calcutta" );
$conn = mysqli_connect( "localhost", "root", "", "winkcage" );
if ( isset( $_POST[ "cmessage" ] ) ){
$messages = $_POST[ "cmessage" ];
$sender = $_SESSION[ "unamsession" ];
$receiver = "vinaykumar";
$timedate = date( "Y-m-d h:i:sa" );
$sendquery = "INSERT INTO messages(sender, receiver, message, time) VALUES('$sender', '$receiver', '$messages', '$time')";
$sendqueryrun = mysqli_query( $conn, $sendquery );
}
或DateTime class
:
$conn = mysqli_connect( "localhost", "root", "", "winkcage" );
if ( isset( $_POST[ "cmessage" ] ) ){
$messages = $_POST[ "cmessage" ];
$sender = $_SESSION[ "unamsession" ];
$receiver = "vinaykumar";
$date = new DateTime( "now", new DateTimeZone( "America/Bogota" ) );
$timedate = $date->format( "Y-m-d H:i:s" );
$sendquery = "INSERT INTO messages(sender, receiver, message, time) VALUES('$sender', '$receiver', '$messages', '$time')";
$sendqueryrun = mysqli_query( $conn, $sendquery );
}
答案 1 :(得分:1)
试试这个:
date_default_timezone_set('Asia/Dhaka'); //set the time zone
echo date('Y-m-d h:i:s A'); //print local time of the current time zone
<强>更新强>
Mysql日期时间格式为24H。要插入mysql数据库,
$timedate = date('Y-m-d H:i:s');//24H time format
或者,
$sendquery="INSERT INTO messages(sender, receiver, message, time) VALUES('$sender', '$receiver', '$messages', '".date('Y-m-d H:i:s', strtotime($timedate))."')";
答案 2 :(得分:0)
你可以这样做:
$d = new DateTime();
$d->setTimezone(new DateTimeZone('Europe/London'));
var_dump($d);
您也可以在一行中执行此操作,如下所示:
$d = new DateTime('', new DateTimeZone('Europe/London'));
<强>输出:强>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-04-04 15:19:35.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/London"
}
答案 3 :(得分:0)
您可以在php.ini文件中更改它。
只需搜索date.timezone
并将其设置为您的时区。
转到http://php.net/manual/en/timezones.php搜索您的。
或者您可以使用date_default_timezone_set()
。
对于这个,我让你在那里搜索:http://php.net/manual/en/function.date-default-timezone-set.php
例如,如果选择Paris,则在php.ini文件中它将是:
date.timezone = Europe/Paris
使用该功能,它将是:
date_default_timezone_set('Europe/Paris');
编辑: 试试这段代码。
date_default_timezone_set("Asia/Calcutta");
$conn=mysqli_connect("localhost", "root", "", "winkcage");
if(isset($_POST["cmessage"])){
$messages=$_POST["cmessage"];
$sender=$_SESSION["unamsession"];
$receiver="vinaykumar";
$timedate=date("Y-m-d h:i:sa");
$sendquery="INSERT INTO messages(sender, receiver, message, time) VALUES('$sender', '$receiver', '$messages', '$timedate')";
$sendqueryrun=mysqli_query($conn, $sendquery);
}