[码海拾贝 之Perl]获取日期以及日期的加减

前言

在Perl 中, 不安装其他模组的状况下, 可以使用 localtime 来获取当地日期和时间。

在标量上下文中, 返回的是字符串格式。

my $localtime = localtime();
print "\n$localtime\n";

返回:

Thu Jan  1 18:17:56 2015

在列表上下文中, 返回的是描述当前时间的一个元素列表

my ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime();

$sec     秒,0 ~ 59
$min     分,0 ~ 59
$hour     时,0 ~ 23
$mday     月份中的日期, 1 ~ 2 8、2 9、3 0或3 1
$mon     年份中的月份, 0 ~ 11(这里请特别要小心)
$year_off    1900年以来的年份。将1900加上这个数字,得出正确的4位数年份
$wday     星期几,0 ~ 6
$yday     一年中的第几天,0 ~ 364或365
$isdst     如果夏令时有效,则为真

所以通过这种方式获得的日期:

年份需要加 1900:  $year += 1900;

月份需要加一  : $mon += 1;

几个方法

得到当前日期:

sub get_current_day
{
	my($sec,$min,$hour,$day,$mon,$year) = localtime();
	$mon++;$year += 1900;
	my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);
	return $data_now;
}

如果要得到上一天的日期, 不能只是简单的在上面的日期基础上减一, 如果这样, 遇到跨月就会有问题:

正确的是 时间减去 86400秒(24 小时)

sub get_last_day
{
	my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400);
	$mon++;$year += 1900;
	my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);
	return $data_now;
}

得到上几天的日期:

sub get_last_number_day
{
	my($lastNumber) = @_;
	my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400*$lastNumber);
	$mon++;$year += 1900;
	my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);
	return $data_now;
}
时间: 2024-12-15 06:56:12

[码海拾贝 之Perl]获取日期以及日期的加减的相关文章

[码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在

前言 检索一个字符串是否存在于一个数组中, 最基本的想法应该就是对数组进行循环, 逐个判断数组的每个元素值和给定的值是否相等. (在Java语言还可以把数组转成 List , 在 list 中直接有 contains 方法可以使用) 看一段简单的代码: my @arr2 = qw(str1 str2 str3 str4); foreach(@arr2) { if($_ eq "str2") { print "str2 exist in Array!\n"; last

java中对日期的操作,日期的比较,加减

首先给大家介绍的两个类是SimpleDateFormat和calendar 一:SimpleDateFormat  dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")/ 还有一种是new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Loc ale.UK)//输出的样子是Wed Mar 21 00:00:00 CST 2018 这里面的参数是你需要格式化的日期的

自己实现的原码、反码、补码、移码的表示与加减运算软件

项目背景:这是我在大二上计算机组成原理这门课时,老师布置了一个课外作业(可以加分),她的要求是做一个能实现原码.反码.补码.移码的表示以及模仿计算机补码做加减运算功能的网络版软件.为了加平时分,于是我用一周的时间粗略地自学下JavaScript,然后将上述功能实现了,虽然只是一个微乎其微的小项目,但对热爱编程的我来说,还是有很大的成就感,故写下此文章已作留念~~~ 下面是实现的页面效果: 下面是实现的JavaScript源码: <!--wenjan.htm--> <html> &l

用js进行日期与天数的加减

以在某个日期上加减天数来说,只要调用Date对象的setDate()函数就可以了,具体方法如下:(方便好用) function addDate(date,days){ //日期加减天数       var d=new Date(date);        d.setDate(d.getDate()+days);        var m=d.getMonth()+1;        return d.getFullYear()+'-'+m+'-'+d.getDate(); } 其中,date参数

[码海拾贝 之TC] 使用View 定义动态的Class

前言 在TC 中, Persistent Class 和 Table 是对应的关系. 定义一个Persistent的Class , updatedb 的时候就会产生对应的table. 在TC 的开发环境中, 使用一个username . 对应的会在这个username 下产生一个table 在正式环境中, 因为使用到 adm, su ,可key 三个username, 所以在这三个username 下都会生成相应的table. 具体数据保存在哪一张table 中, 就看Class 的定义是继承自

[码海拾贝 之JS] JS 之删除数组中的元素

前言 在Java 中要从一个list 中删除一个元素, 直接使用 remove 方法就可以了. 在js 中的array 并没有 remove 方法, 但是在js 中array 有splice 方法可以达成相同的效果, 除此之外, 还可以使用其他方式来实现这个效果. 使用splice 方法实现从数组中删除元素 首先看一下 splice 方法如何使用. 语法 arrayObject.splice(index,howmany,item1,.....,itemX) 参数 描述 index 必需.整数,规

java 日期格式转换,加减等

将string转换成日期Date SimpleDateFormat re = new SimpleDateFormat(String formate);----:yyyy-MM-dd System.out.println(re.parse("1990-02-02"));----Fri Feb 02 00:00:00 CST 1990 将日期转换成String SimpleDateFormat sfdate = new SimpleDateFormat(String formate);-

Java对日期Date类进行加减运算,年份加减,月份加减

Date d=new Date();    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");    System.out.println("今天的日期:"+df.format(d));    System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000))); 

【转】Java对日期Date类进行加减运算,年份加减,月份加减

import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception {                SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");