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
的变量,我已经更正了它。这个问题是我解决的另一个问题。非常感谢。