我正在尝试根据用户使用的国家/地区更改我的日期格式。
目前我已经想出了这个:
function format_date($date = '', $format=null)
{
if($date == "0000-00-00") return "";
$DateTime = new DateTime($date);
if(!$format){
$CI =& get_instance();
switch($CI->session->userdata("country")){
case 3:
$format = "d-m-Y H:i:s";
break;
default:
$format = "Y-m-d H:i:s";
break;
}
}
return $DateTime->format($format);
}
但是如果$ date的格式是:
2013-03-15 15:50:30
我希望输出为:
15-03-2013 15:50:30
如果格式为:
2013年3月15日
我希望输出为:
15-03-2013
而不是:
15-03-2013 00:00:00
如果你想要参数格式是什么,我应该将它强制为格式。
编辑:
有时我们只需要2013-04-12 16:52。
它也应该在这里格式化:/
答案 0 :(得分:0)
使用mkdate来实现此目标
/* 2013-04-18 */
echo date("Y-m-d", mktime(0, 0, 0, 12, 30, 1997));
/* 18-04-2013 */
echo date("d-m-Y", mktime(0, 0, 0, 12, 30, 1997));
上找到的更多示例
答案 1 :(得分:0)
function format_date($date = '', $format=null)
{
if($date == "0000-00-00") return "";
// Compare len of str $date
if(strlen($date) > 10)
$his = " H:i:s";
else
$his = "";
$DateTime = new DateTime($date);
if(!$format){
$CI =& get_instance();
switch($CI->session->userdata("country")){
case 3:
$format = "d-m-Y" . $his;
break;
default:
$format = "Y-m-d" . $his;
break;
}
}
return $DateTime->format($format);
}
答案 2 :(得分:0)
您可以使用strpos
来检查字符串是否包含空格(然后它显然有时间戳)。
我为你创建了一个函数,例如$date
参数。如果没有指定时间,则2012-01-01 01:00:00
或2012-02-03
,$dateFormat
为date()
格式,如果时间<$dateTimeFormat
为date()
格式已经指定了strong> has 。
<?php
function DateFormatDynamic($date, $dateFormat, $dateTimeFormat) {
$unixTime = strtotime($date);
if (strpos($date, " ") !== false) {
return date($dateTimeFormat, $unixTime);
} else {
return date($dateFormat, $unixTime);
}
}
var_dump(DateFormatDynamic("2013-03-15", "d-m-Y", "d-m-Y H:i:s"));
//string(10) "15-03-2013"
var_dump(DateFormatDynamic("2013-03-15 15:23:00", "d-m-Y", "d-m-Y H:i:s"));
//string(19) "15-03-2013 15:23:00"
var_dump(DateFormatDynamic("2013-03-15 15:23", "d-m-Y", "d-m-Y H:i"));
//string(19) "15-03-2013 15:23"
?>
答案 3 :(得分:0)
您还可以在验证日期格式后尝试
$d = '2013-03-15 15:50:30';
$d2 = '2013-03-15';
function myFormatDate($d){
$format = 'd-m-Y';
if(count(explode(' ',$d)) > 1)
$format = 'd-m-Y H:i:s';
return date($format, strtotime($d));
}
var_dump(myFormatDate($d));
var_dump(myFormatDate($d2));
答案 4 :(得分:0)
一些hacky解决方案,但你可以使用:
$date = $DateTime->format($format);
if (strpos($date, '00:00:00')) {
$date = substr($date, 0, strpos($date, '00:00:00') - 1);
}
return $date;
jist是,如果日期包含00:00:00,则删除字符串的那一部分以及- 1
帐户中日期和时间之间的空格。