如何在 PHP 中将 DateTime 转换为字符串

在 PHP 中将 DateTime 转换为字符串非常容易,有一些专用的函数。例如,使用预定义的格式或使用 list()

使用 DateTime 类的 format() 方法

PHP DateTime 类用于管理日期和时间,它从 PHP 5.2 版开始引入。

在传统的 PHP 函数上使用 DateTime 来管理日期的一些优势:

  • 它可以处理更多的字符串格式
  • 比其他函数容易。
  • 该接口将后端逻辑与一个干净的接口一起使用。

DateTime 类的有用方法之一是 format(),它根据给定的格式返回格式化的日期字符串。

例:

$theDate    = new DateTime('2020-03-08');
echo $stringDate = $theDate->format('Y-m-d H:i:s');
//output: 2020-03-08 00:00:00

$stringDate 现在是来提供格式的字符串。

注意
DateTime->format() 并不真正支持微秒。

使用 date_format() 方法

date_format() 方法将返回一个新的 DateTime 对象,然后根据给定的格式对日期进行格式化。

例:

$date = date_create_from_format('d M, Y', '08 Mar, 2020');
echo $newFormat = date_format($date,"Y/m/d H:i:s");
//output: 2020/03/08 00:00:00

date_create_from_format() 用于根据提供的格式解析时间字符串。该函数接受三个参数,分别是 formattimetimezone(可选)。

在上面的示例中,date_format() 处理创建的日期以将其转换为字符串。

date_d.php 中使用预定义的格式

预定义格式列表:

define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");

用法示例:

$dateFormat = new DateTime(); // this will return current date
echo $stringDate = $date->format(DATE_ATOM);
//output: 2020-03-08T12:54:56+01:00

上面的示例使用一种预定义格式,因此无需实际提供它。

使用 list() 函数将日期转换为字符串

list() 函数可用于在一次操作中将值分配给变量列表,但仅适用于数字数组。当将数组分配给多个值时,数组中的第一项将分配给第一个变量,依此类推,直到变量数量结束。但是,变量的数量不能超过数字数组的长度。

例:

$date = explode("/",date('d/m/Y/h/i/s')
list($day,$month,$year,$hour,$min,$sec) = $date);
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;
//output: 03/08/2020 02:01:06

使用 list() 函数,你可以轻松地将 $day$month$year$hour$min$sec 用作变量。

如何在 Python 中截断字符串

使用字符串切片来截断字符串,例如 result = my_str[:5]。 切片返回字符串的前 N 个字符。 如果字符串比切片长,省略号可以添加到子字符串的末尾。

my_str = 'zadmei.com'

# ✅ 将字符串截断为 5 个字符的长度
result = my_str[:5]
print(result)  # ?️ zadmei

# ✅ 用省略号将字符串截断为 5 个字符的长度
result = my_str[:5] + '...' if len(my_str) > 5 else my_str
print(result)  # ?️ zadmei...

如何在 Python 中截断字符串

我们使用字符串切片来截断字符串。

字符串切片的语法是 my_str[start:stop:step]

注意 :start 索引是包含的,而 stop 索引是排除的(最多,但不包括)。

Python 索引是从零开始的,因此字符串中的第一个字符的索引为 0,最后一个字符的索引为 -1 或 len(my_str) – 1。

stop 索引是排除的(最多,但不包括),因此切片返回字符串的前 N 个字符。

my_str = 'zadmei.com'

result = my_str[:5]
print(result)  # ?️ zadmei

该示例返回一个包含字符串前 5 个字符的子字符串。

如果字符串比切片长,我们可以使用三元运算符添加省略号。

my_str = 'zadmei.com'

result = my_str[:5] + '...' if len(my_str) > 5 else my_str
print(result)  # ?️ zadmei...

如果满足条件,则返回 if 语句左侧的表达式,否则按原样返回字符串。

或者,我们可以使用格式化的字符串文字。


使用格式化的字符串文字截断字符串

使用格式化的字符串文字截断字符串,例如 result = f'{my_str:.5}'。 我们可以使用 f 字符串中的表达式将字符串的长度限制为给定的字符数。

my_str = 'zadmei.com'


result = f'{my_str:.5}'
print(result)  # ?️ zadmei

result = f'{my_str:.5}{"..." if len(my_str) > 5 else ""}'
print(result)  # ?️ zadmei...

格式化字符串文字(f-strings)让我们通过在字符串前面加上 f 来在字符串中包含表达式。

var1 = 'zadmei'
var2 = '.com'

result = f'{var1}{var2}'
print(result)  # ?️ zadmei.com

确保将表达式包裹在花括号 – {expression} 中。

格式化的字符串文字还使我们能够在表达式块中使用格式规范迷你语言。

点号 . 后面的数字是字符串的最大长度。

该示例将字符串格式化为最多 5 个字符。

如果字符串比切片长,我们可以使用三元运算符添加省略号。

my_str = 'zadmei.com'


result = f'{my_str:.5}{"..." if len(my_str) > 5 else ""}'
print(result)  # ?️ zadmei...

如果我们需要从字符串中删除最后一个单词,请使用 str.rsplit() 方法。

my_str = 'zadmei com'

# ✅ 从字符串中删除最后一个单词(使用 str.rsplit())

new_str = my_str.rsplit(' ', 1)[0]
print(new_str)  # ?️ 'zadmei'

str.rsplit 方法使用提供的分隔符作为分隔符字符串返回字符串中的单词列表。

my_str = 'zadmei com'

print(my_str.rsplit(' '))  
print(my_str.rsplit(' ', 1)) 

上述代码运行结果如下

如何在 Python 中截断字符串

该方法采用以下 2 个参数:

  • separator 在每次出现分隔符时将字符串拆分为子字符串
  • maxsplit 最多完成最大拆分,最右边的拆分(可选)

如果我们需要从字符串中删除最后 2 个单词,请将 maxsplit 参数设置为 2 并访问索引 0 处的列表项。

my_str = 'zadmei onmpw com'

# ?️ 从字符串中删除最后一个单词
result = my_str.rsplit(' ', 1)[0]
print(result)  # ?️ zadmei onmpw

# ?️ 从字符串中删除最后 2 个单词
result = my_str.rsplit(' ', 2)[0]
print(result)  # ?️ zadmei

maxsplit 参数可以设置为从右侧最多拆分字符串 N 次。