localtime:如何用perl告诉当前时间

Perl有一个方便的内置函数,用于在脚本中查找当前日期和时间。然而,当我们谈论查找时间时,我们谈论的是运行脚本的机器上当前设置的时间。例如,如果您在本地机器上运行Perl脚本,localtime将返回您设置的当前时间,并且可能设置为当前时区。...

Perl有一个方便的内置函数,用于在脚本中查找当前日期和时间。然而,当我们谈论查找时间时,我们谈论的是运行脚本的机器上当前设置的时间。例如,如果您在本地机器上运行Perl脚本,localtime将返回您设置的当前时间,并且可能设置为当前时区。

Cuckoo clocks with different time zones

当您在web服务器上运行相同的脚本时,您可能会发现​当地时间从​桌面系统上的本地时间。服务器可能位于不同的时区或设置不正确。每台机器对localtime的定义可能完全不同,可能需要在脚本内部或服务器本身上进行一些调整,以使其符合您的期望。

localtime函数返回一个关于当前时间的完整数据列表,其中一些数据需要调整。运行下面的程序,您将看到列表中的每个元素打印在行上,并用空格分隔。

#!/usr/local/bin/perl @timeData = localtime(time); print join(' ', @timeData);

您应该会看到类似的情况,尽管数字可能会非常不同。

20 36 8 27 11 105 2 360 0

当前时间的这些要素依次为:

  • 分秒必争
  • 一点多钟
  • 午夜后数小时
  • 月日
  • 年初后的几个月
  • 自1900年以来的年数
  • 本周开始后的天数(星期日)
  • 自年初以来的天数
  • 夏令时是否处于活动状态

因此,如果我们回到示例并尝试阅读它,您将看到它是2005年12月27日上午8:36:20,这是星期日(星期二)后的两天,距离年初已经360天了。夏令时未处于活动状态。

使perl本地时间可读

localtime返回的数组中的一些元素读起来有点笨拙。从1900年过去的年数来看,谁会想到今年呢?让我们来看一个让我们的日期和时间更清晰的例子。

#!/usr/local/bin/perl @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun); ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(); $year = 1900 + $yearOffset; $theTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year"; print $theTime;

运行程序时,您应该会看到一个更可读的日期和时间,如下所示:

9:14:42, Wed Dec 28, 2005

那么我们做了什么来创建这个更具可读性的版本呢?首先,我们准备两个数组,其中包含月份和星期几的名称。

@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);

由于localtime函数分别以0-11和0-6的值返回这些元素,因此它们是数组的最佳候选元素。localtime返回的值可用作访问数组中正确元素的数字地址。

$months[$month] $weekDays[$dayOfWeek]

下一步是从localtime函数获取所有值。在本例中,我们使用Perl快捷方式自动将localtime数组中的每个元素放入自己的变量中。我们选择了名称,这样很容易记住哪个元素是哪个。

($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();

我们还需要调整年度价值。请记住,localtime返回自1900年以来的年份数,因此为了查找当前年份,我们需要在给定的值上加上1900。

$year = 1900 + $yearOffset;

如何用perl告诉当前gm时间

假设您希望避免所有可能的时区混淆,并自己控制偏移量。在localtime中获取当前时间将始终返回一个基于机器时区设置的值-美国的服务器将返回一次,而澳大利亚的服务器将返回一次,由于时区不同,几乎全天都会返回一次。

Perl还有第二个方便的计时功能,其工作方式与localtime完全相同,但它不是返回机器时区的固定时间,而是返回协调世界时(缩写为UTC,也称为格林威治标准时间或GMT)。很简单,这个函数叫做gmtime。

#!/usr/local/bin/perl @timeData = gmtime(time); print join(' ', @timeData);

除了返回的时间在每台机器上都是相同的,并且以GMT为单位,gmtime和localtime函数之间没有区别。所有数据和转换都以相同的方式完成。

#!/usr/local/bin/perl @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun); ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = gmtime(); $year = 1900 + $yearOffset; $theGMTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year"; print $theGMTime;
  1. localtime将返回运行脚本的计算机上的当前本地时间。
  2. gmtime将返回格林威治标准时间,或GMT(或UTC)。
  3. 返回值可能与您期望的不完全相同,因此请确保根据需要对其进行转换。

  • 发表于 2021-10-01 12:22
  • 阅读 ( 178 )
  • 分类:编程

你可能感兴趣的文章

perl公司(perl)和python(python)的区别

关键区别–perl与python 计算机程序为计算机执行任务提供指令。一组指令被称为计算机程序。计算机程序是用编程语言开发的。高级语言程序员可以理解,但计算机却不能理解。因此,这些程序被转换成机器可理解的格式。Per...

  • 发布于 2020-10-19 17:38
  • 阅读 ( 215 )

在linux中运行ms dos游戏和应用程序的3种方法

... qemu-system-i386 -cdrom FD12CD.iso -m 32 -hda dos.img -k en-us -rtc base=localtime -soundhw **16,adlib -device cirrus-vga -boot order=d ...

  • 发布于 2021-03-11 18:00
  • 阅读 ( 249 )

如何用shotcut制作你的第一部电影

拍电影并不难。另一方面,拍一部好电影需要一个像样的编辑工具。你可能不会去切割一个新版本的benhur,但只要你有一个编辑工具,满足你的要求,你应该能够产生一些至少是可观察的。 ...

  • 发布于 2021-03-13 00:10
  • 阅读 ( 299 )

如何用moviemaker轻松压缩web视频文件

如果你有一个你认为全世界都需要看的视频,大多数人会本能地在YouTube或Facebook等服务上点击上传按钮。 ...

  • 发布于 2021-03-15 09:42
  • 阅读 ( 236 )

如何在linux上使用rename命令

...行版,则为prename或perl rename)。 最后一部分是*.prog,它告诉rename对所有的.prog文件进行操作。 中间部分定义了我们希望对每个文件名所做的工作。s代表替代品。第一个术语(.prog)是rename将在每个文件名中搜索的内容,第二个...

  • 发布于 2021-04-03 12:15
  • 阅读 ( 277 )

如何用键盘重新排列mac的窗口

...角的锁并输入密码,然后才能在此处进行任何更改。 如何用奇观布置你的窗户 现在眼镜已经设置好了,单击菜单栏中的图标。您将看到操作列表: 单击其中任何一个,将排列当前窗口。或者,只需花时间学习列出的键盘快捷...

  • 发布于 2021-04-08 12:03
  • 阅读 ( 113 )

如何用windows10的游戏dvr和游戏条录制pc游戏

Windows10内置了一个用于录制PC游戏视频的工具。你可以将游戏视频上传到YouTube或其他视频分享网站,也可以将视频片段放在自己的电脑上,与朋友分享。 你可以通过“游戏吧”来实现这一点,这是Xbox应用程序提供的“游戏DVR”...

  • 发布于 2021-04-10 10:51
  • 阅读 ( 168 )

如何用déjádup轻松备份ubuntu

DéjáDup是Ubuntu附带的一个简单但功能强大的备份工具。它提供rsync的强大功能,包括增量备份、加密、调度和对远程服务的支持。 使用DéjáDup,您可以快速将文件恢复到以前的版本,或者从文件管理器窗口恢复丢失的文件。它...

  • 发布于 2021-04-12 13:14
  • 阅读 ( 166 )

如何用total commander一次重命名多个文件

所以你有一堆名字看起来很潦草的文件。并不是名字错了,而是全是小写,缺少空格,而且一般都很乱。对Total Commander的多重重命名工具来说不是问题!继续读下去。 得到总司令 Total Commander是一个强大的文件管理实用程序。...

  • 发布于 2021-04-13 00:55
  • 阅读 ( 132 )

如何用更简单、更轻的版本取代facebook messenger

今天早些时候,我发表了一篇关于Facebook Messenger新的、稍加改进的主屏幕的文章。但是,尽管公司尝试了一些清理工作,我还是带着几个月来的同样感觉离开了:Messenger已经变成了一个臃肿的烂摊子。评论人士对此表示同意,我...

  • 发布于 2021-05-11 06:17
  • 阅读 ( 182 )
Darktear
Darktear

0 篇文章

相关推荐