有人知道从包含日期格式的日期获取字符串的方法吗?
<?php
$date = date ("2009-10-16 21:30:45");
// smething like this?
print date_format ($date);
?>
我问这个是因为我想优化我写的这个函数,通常是为了从服务器获取与时区不同的日期,而不做特别的事情
<?php
function get_timezone_offset ($timezone, $date = null, $format = null, $offset_timezone = null) {
if ($date == null) $date = date ($format);
if ($offset_timezone == null) $offset_timezone = date_default_timezone_get ();
if ($format == null) $format = "Y-m-d H:i:s";
// I'd like to find a way that can avoid me to write $format and get it directly from the date i pass, but I don't know a particular method can do it
// if ($format == null) $format = date_format ($date);
$date_time = new DateTime ($date, new DateTimeZone ($offset_timezone));
$date_time->setTimeZone (new DateTimeZone ($timezone));
return $date_time->format ($format);
}
print get_timezone_offset ("Europe/Rome");
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"));
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"), "Y-m-d H:i:s");
print get_timezone_offset ("Europe/Rome", "2009-10-16 21:30:45", "Y-m-d H:i:s", "America/New_York");
?>
我希望出于性能原因避免使用正则表达式,但我不知道这是否可能
答案 0 :(得分:9)
您可以使用strtotime将字符串日期转换为时间戳,并使用您想要的时间戳。 ;)
<?php
$date = "2009-10-16 21:30:45";
$ts = strtotime($date);
echo date('Y-m-d', $ts);
?>
答案 1 :(得分:5)
据我所知,没有保证倒退的方法。最好的方法可能是尝试将正则表达式与预期的众所周知的格式匹配(例如,{Y-m-d为\d{2,4}[-/]\d{2}[-/]\d{2}
)但我想不出一种简单的方法来进行匹配而不使用正则表达式。您还必须检查解析后的格式是否有意义,并且您不能对2009年3月2日这样的模糊日期做很多事情,这些日期可以表示为09/03/02
,2009-03-02
,{{1} },02/03/09
,甚至03/02/09
。
答案 2 :(得分:5)
PHP date()函数将时间戳格式化为更易读的日期和时间。为您的项目尝试此代码,
<?php
$date=date_create('2014-10-20');
date_time_set($date,12,20,55);
echo date_format($date,'Y-m-d H:i:s');
?>
答案 3 :(得分:4)
我知道现在已经很晚了,但是最好这样做:
$val = array();
foreach ($value as $key) {
$nested = $this->Mdl_mymodel->arr();
if($nested != NULL) {
$n = 0;
foreach ($nested as $nest) {
$n++;
$val[$n] = $nest->num;
}
}
else {
// $val = ''; Commented this line because you have already
// initialized $val. If you do not get records,
// it will return as blank array.
}
print_r($val);
}
print_r($val);
答案 4 :(得分:0)
在while循环和双引号中
while($row = mysqli_fetch_assoc($result)) {
echo " Date is:" ".date('d-M-Y H:i',(strtotime($row["Date_column_name"])))." ;
};