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

Php 如何使用date函数的timestamp参数更改日期和时间?,php,mysql,date,datetime,Php,Mysql,Date,Datetime,当我使用date()函数来显示日期时,它与本地时区无关。我希望它与当地时区一致。是否可以使用此函数的timestamp参数执行此操作 实际上,我不知道timestamp参数是什么。如何使用它来更改日期和时间 第二,是否有其他功能可以根据我们的时区设置日期时间 以下是我尝试过但不起作用的方法: <?php $conn=mysqli_connect("localhost", "root", "", "winkcage"); if(isset($_POST["cmessage"])){ $mes

当我使用
date()
函数来显示日期时,它与本地时区无关。我希望它与当地时区一致。是否可以使用此函数的
timestamp
参数执行此操作

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

第二,是否有其他功能可以根据我们的时区设置日期时间

以下是我尝试过但不起作用的方法:

<?php
$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");
$time=date_default_timezone_set("Asia/Calcutta");
$sendquery="INSERT INTO messages(sender, receiver, message, time) VALUES('$sender', '$receiver', '$messages', '$time')";
$sendqueryrun=mysqli_query($conn, $sendquery);
}
?>
试试这个:

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日期时间格式为24小时。要在mysql数据库中插入

$timedate = date('Y-m-d H:i:s');//24H time format
或者


你可以这样做:

$d = new DateTime();
$d->setTimezone(new DateTimeZone('Europe/London'));

var_dump($d);
您也可以在一行中完成,如下所示:

$d=新日期时间(“”,新日期时区('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"
}

您可以在php.ini文件中更改它。 只需搜索
date.timezone
并将其设置为您的时区

去搜索你的

或者您可以使用
date\u default\u timezone\u set()
。 对于这一个,我让您在那里搜索:

例如,如果选择Paris,在php.ini文件中,它将是:

date.timezone = Europe/Paris
date_default_timezone_set('Europe/Paris');
有了该功能,它将是:

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);
}
时间戳仅此而已-它在it中被广泛使用,定义为自1970年1月1日星期四00:00:00协调世界时(UTC)以来经过的秒数

date
函数的
timestamp
参数的默认值为。如果不符合您的时区,则应使用函数更改默认时区

而不是使用函数(如果您可以编辑
php.ini
),您应该在那里设置默认时区。更多关于它

另外,如果您运行的是PHP>=5.2,则最好使用它。要获取时区中的当前日期,您可以使用两个参数创建新的
DateTime对象
:第一个参数是当前时间(您可以将其设置为
now
,它将工作);第二个参数是
DateTimeZone对象
,时区名称作为参数,可用时区名称列表为。然后您可以轻松地将其转换为所需的格式。例如:

$date=新日期时间(“现在”,新日期时区(“美国/波哥大”);
$date=$date->format(“Y-m-dh:i:s”);
echo$date;//打印:2016-04-04 09:07:48
编辑: 对于您的代码,请尝试:

date\u default\u timezone\u set(“亚洲/加尔各答”);
$conn=mysqli_connect(“localhost”、“root”、“winkcage”);
如果(isset($_POST[“cmessage”])){
$messages=$\u POST[“cmessage”];
$sender=$\会话[“unamsession”];
$receiver=“vinaykumar”;
$timedate=日期(“Y-m-d h:i:sa”);
$sendquery=“在消息(发送者、接收者、消息、时间)中插入值(“$sender”、“$sender”、“$messages”、“$time”)”;
$sendqueryrun=mysqli\u查询($conn$sendquery);
}
或使用
日期时间类

$conn=mysqli_connect(“localhost”、“root”、“winkcage”);
如果(isset($_POST[“cmessage”])){
$messages=$\u POST[“cmessage”];
$sender=$\会话[“unamsession”];
$receiver=“vinaykumar”;
$date=新日期时间(“现在”,新日期时区(“美国/波哥大”);
$timedate=$date->格式(“Y-m-d H:i:s”);
$sendquery=“在消息(发送者、接收者、消息、时间)中插入值(“$sender”、“$sender”、“$messages”、“$time”)”;
$sendqueryrun=mysqli\u查询($conn$sendquery);
}

了解\DateTime()php函数。。。顺便说一句:请检查问题的详细信息,我已经添加了我的代码。它不起作用了。它正在存储0000-00-00 00:00:00.000000。@VikasKumar编辑的答案,现在试试。另外,为了将来,您应该阅读并使用这些编码样式,因为这是一个标准。您能回答我关于设计的另一个问题吗?我有一个div,并且设置了overflow:scroll-in-CSS。现在,我在这个div中有一个很长的列表。我想要的是,当我加载页面时,列表的最后一项应该显示在底部,而不是第一项。我的意思是顶部的列表项应该是隐藏的,类似于Facebook聊天。我可能是错的,但不应该
$timedate
$time
,反之亦然,您使用两个不同的变量来存储/插入。请检查问题详细信息,我已经添加了代码。它不起作用了。它正在存储0000-00-00:00:00.000000。您需要使用代码顶部的函数。不需要将其放入变量中。然后使用date()函数。您需要插入受date()函数影响的值。请检查问题详细信息,我已经添加了代码。它不起作用了。它正在存储0000-00-00 00:00:00.000000。@VikasKumar看起来像是您将变量命名为
$timedate
,但插入了一个名为
$time
的变量,我已经更正了它。这个问题是我解决的另一个问题。非常感谢。