2013-08-29 72 views
0

删除时间指示我让用户选择他们想要的日期时间格式,所以大多有类似D, d M Y H:i:s,然而,这可能是任何东西。从日期时间格式的PHP

在某些情况下,虽然,我只是想显示的日期部分,但仍使用用户的格式。

有没有一种简单的方法在PHP中从这样的格式中删除时间部分? 我曾经想过在格式化日期之前从格式中删除所有时间元素,但是又一次,您如何可靠地删除分隔字符,如:或。 ,而不会影响日期的格式(当然这可能是任何异国情调的)。

+0

就我个人而言,我会给他们提供日期时间和日期唯一格式的选项。 – Anigel

+0

这确实是理想的情况,但用户信息是在phpbb中设置的,我宁愿不要太捣乱,以免升级过于困难。 –

+0

有人可能会提供一个带有正则表达式的优秀preg_replace解决方案,但我认为您可以对您认为与时间相关的字符执行一些str_replace操作(并在删除之前/之后查找非空格分隔符)。小时,分钟和秒钟的值都是已知的,只有10个左右的搜索... –

回答

0

我认为最好的办法是定义一个匹配的日期格式为您在数据库中遇到的每一个通常的日期时间格式。我不知道phpBB是否允许完全自定义格式,这会让事情变得更加困难,但普通用户不会摆弄date()的PHP配置选项。

0

一如既往,有多种方法可以解决您的问题。

一种方法是显示5种不同格式的下拉菜单。 然后,您可以根据用户偏好设置一个可以重新使用的功能。 所以说我选择格式nr。 2在下拉列表中,您只需只是整数保存到我的用户设置,然后让你可以这样调用

$time_to_print = format_according_to_user_preference($preference,$timestamp); 

一个函数,那么你有一个函数与一对夫妇的if语句听起来像

function format_according_to_user_preference($preference,$timestamp){ 
    if($preference == 1){ 
    //American preference 
    return date('Y-m-d H:i:s',strtotime($timestamp)); 
    }else if($preference == 2){ 
    //European preference 
    return date('d-m-Y H:i:s',strtotime($timestamp)); 
    }else{ 
    //some default preference just in case user hasen't set a wish 
    return date('Y-M-D H:i:s',strtotime($timestamp)); 
    } 
}