如何使用日期函数的时间戳参数更改日期和时间?

时间:2016-04-04 13:59:40

标签: php mysql date datetime

当我使用Select r.* from (select * from results1 union select * from results2) r left outer join procedures p on r.pid = p.id 功能显示日期时,它不符合当地时区。我希望它是根据当地时区。是否可以使用此函数的date()参数完成?

实际上我不知道timestamp参数是什么。如何使用它来改变日期和时间?

其次,还有其他功能可以根据我们的时区设置日期时间吗?

这是我尝试过但却无法正常工作的内容:

timestamp

4 个答案:

答案 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);
}