mat*_*thy 470 php formatting date
我试图将日期从yyyy-mm-dd转换为dd-mm-yyyy(但不是在SQL中); 但我不知道日期函数如何需要时间戳,我无法从此字符串中获取时间戳.
这怎么可能?
ric*_*age 1014
使用strtotime()和date():
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
Run Code Online (Sandbox Code Playgroud)
请注意,这是对原始问题的快速解决方案.对于更广泛的转换,您应该真正使用DateTime该类来解析和格式化:-)
cei*_*roa 262
如果你想避免strtotime转换(例如,strtotime无法解析你的输入)你可以使用,
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
Run Code Online (Sandbox Code Playgroud)
或者,等效地:
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
Run Code Online (Sandbox Code Playgroud)
你首先给它$ dateString所在的格式.然后你告诉它你想要$ newDateString的格式.
或者如果源格式始终是"Ymd"(yyyy-mm-dd),那么只需使用DateTime:
<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
Run Code Online (Sandbox Code Playgroud)
Tim*_*tle 71
使用:
implode('-', array_reverse(explode('-', $date)));
Run Code Online (Sandbox Code Playgroud)
没有日期转换开销,我不确定它是否重要.
Alp*_*arı 36
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
Run Code Online (Sandbox Code Playgroud)
此代码适用于每种日期格式.
由于您的旧日期格式,您可以更改替换变量的顺序,例如$ 3- $ 1- $ 2.
Kev*_*vin 27
$timestamp = strtotime(your date variable);
$new_date = date('d-m-Y', $timestamp);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅文档strtotime.
甚至更短:
$new_date = date('d-m-Y', strtotime(your date variable));
Run Code Online (Sandbox Code Playgroud)
Gab*_*iel 26
另一个模糊的可能性:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
Run Code Online (Sandbox Code Playgroud)
我不知道我是否会使用它但仍然:)
Igo*_*nin 17
注意:因为这篇文章的回答有时会被提升,所以我回到这里,请求人们不要再投票了.我的答案是古老的,技术上不正确,这里有几种更好的方法.我只是为了历史目的而把它留在这里.
尽管文档很难描述strtotime函数,但@rjmunro在他的评论中正确地解决了这个问题:它是ISO格式的日期"YYYY-MM-DD".
此外,即使我的Date_Converter功能可能仍然有效,我想警告下面可能有不精确的陈述,所以请不要理会它们.
投票最多的答案实际上是错误的!
在PHP的strtotime手册在这里指出,"函数需要接受一个包含英语日期格式的字符串".它实际意味着它预期美国的美国日期格式,例如"mdY"或"m/d/Y".
这意味着以"Ymd"提供的日期可能会被误解strtotime.您应该以预期的格式提供日期.
我写了一个小函数来以多种格式返回日期.随意使用和修改.如果有人把它变成了一个班级,我会很高兴,如果这将被分享.
function Date_Converter($date, $locale = "br") {
# Exception
if (is_null($date))
$date = date("m/d/Y H:i:s");
# Let's go ahead and get a string date in case we've
# been given a Unix Time Stamp
if ($locale == "unix")
$date = date("m/d/Y H:i:s", $date);
# Separate Date from Time
$date = explode(" ", $date);
if ($locale == "br") {
# Separate d/m/Y from Date
$date[0] = explode("/", $date[0]);
# Rearrange Date into m/d/Y
$date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
}
# Return date in all formats
# US
$Return["datetime"]["us"] = implode(" ", $date);
$Return["date"]["us"] = $date[0];
# Universal
$Return["time"] = $date[1];
$Return["unix_datetime"] = strtotime($Return["datetime"]["us"]);
$Return["unix_date"] = strtotime($Return["date"]["us"]);
$Return["getdate"] = getdate($Return["unix_datetime"]);
# BR
$Return["datetime"]["br"] = date("d/m/Y H:i:s", $Return["unix_datetime"]);
$Return["date"]["br"] = date("d/m/Y", $Return["unix_date"]);
# Return
return $Return;
} # End Function
Run Code Online (Sandbox Code Playgroud)
小智 14
有两种方法可以实现此目的:
1.
$date = strtotime(date);
$new_date = date('d-m-Y', $date);
Run Code Online (Sandbox Code Playgroud)
2.
$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y');
Run Code Online (Sandbox Code Playgroud)
小智 9
在 PHP 中,可以使用不同的场景将任何日期转换为所需的日期格式,例如将任何日期格式更改为日、日、月、年
$newdate = date("D, d M Y", strtotime($date));
Run Code Online (Sandbox Code Playgroud)
它将以以下非常好的格式显示日期
2020 年 11 月 16 日星期一
使用此功能可以从任何格式转换为任何格式
function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
$date_aux = date_create_from_format($from_format, $date);
return date_format($date_aux,$to_format);
}
Run Code Online (Sandbox Code Playgroud)
小智 7
下面给出了生成明天日期的PHP代码,mktime()并将其格式更改为dd/mm/yyyy格式,然后使用它打印echo.
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
Run Code Online (Sandbox Code Playgroud)