gpt4 book ai didi

perl - 快速到达 YYYY-mm-dd HH :MM:SS in Perl

转载 作者:bug小助手 更新时间:2023-10-28 10:42:56 27 4
gpt4 key购买 nike

在编写 Perl 脚本时,我经常发现需要将当前时间表示为格式为 YYYY-mm-dd HH:MM:SS 的字符串(比如 2009-11-29 14:28:29).

在这样做的过程中,我发现自己走的是一条相当繁琐的道路:

  • man perlfunc
  • /localtime 搜索本地时间 - 重复五次 (/ + \n) 以到达手册页的相关部分<
  • 从手册页复制字符串 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);到我的脚本。
  • 试试 my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec );
  • 记住问题 #1:必须在 $year 上加上 1900 才能得到当前年份。
  • 试试 my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec);
  • 记住问题 #2:必须在 $mon 上加 1 才能获得当前月份。
  • 试试 my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $ min, $sec);
  • 看起来还可以。完成!

虽然上述过程有效,但远非最佳。我确信有更聪明的方法,所以我的问题很简单:

在 Perl 中获取当前日期/时间的 YYYY-mm-dd HH:MM:SS 的最简单方法是什么?

“简单”包含“易于编写”和“易于内存”。

最佳答案

在标准POSIX中使用strftime模块。 strftime 的参数在 Perl 的绑定(bind)中,旨在与 localtime 的返回值保持一致和 gmtime .比较

strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)

my          ($sec,$min,$hour,$mday,$mon,$year,$wday,     $yday,     $isdst) = gmtime(time);

命令行使用示例

$ perl -MPOSIX -le 'print strftime "%F %T", localtime $^T'

或来自源文件,如

use POSIX;

print strftime "%F %T", localtime time;

某些系统不支持 %F%T 简写,因此您必须明确使用

print strftime "%Y-%m-%d %H:%M:%S", localtime time;

print strftime "%Y-%m-%d %H:%M:%S", gmtime time;

请注意 time返回调用时的当前时间,而 $^T固定为程序启动的时间。与 gmtime ,返回值是格林威治标准时间的当前时间。使用 localtime 检索您本地时区的时间.

关于perl - 快速到达 YYYY-mm-dd HH :MM:SS in Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com