从php中的日期时间格式中删除时间指示


Remove time indication from datetime format in php

我允许用户选择他们想要的日期时间格式,所以他们中的大多数人都有类似D, d M Y H:i:s的东西,但是,这可以是任何东西。

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

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

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

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

一种方法可以是显示具有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));
    }
}