`

shell编程中的date用法

阅读更多

用shell将时间字符串与时间戳互转

 

date +%s   可以得到UNIX的时间戳;
用shell将时间字符串与时间戳互转:
      date -d "2010-10-18 00:00:00" +%s         输出形如:1287331200
而时间戳转换为字符串可以这样做:
      date -d @1287331200  "+%Y-%m-%d"    输出形如:2010-10-18
如果需要得到指定日期的前后几天,可以:
      1、seconds=`date -d "2010-10-18 00:00:00" +%s`       #得到时间戳
      2、seconds_new=`expr $seconds + 86400`                   #加上一天的秒数86400
      3、date_new=`date -d @$seconds_new "+%Y-%m-%d"`   #获得指定日前加上一天的日前

 

 

1、date --help

%% 输出%符号 a literal %
%a 当前域的星期缩写 locale’s abbreviated weekday name (Sun..Sat)
%A 当前域的星期全写 locale’s full weekday name, variable length (Sunday..Saturday)
%b 当前域的月份缩写 locale’s abbreviated month name (Jan..Dec)
%B 当前域的月份全称 locale’s full month name, variable length (January..December)
%c 当前域的默认时间格式 locale’s date and time (Sat Nov 04 12:02:33 EST 1989)
%C n百年 century (year divided by 100 and truncated to an integer) [00-99]
%d 两位的天 day of month (01..31)
%D 短时间格式 date (mm/dd/yy)
%e 短格式天 day of month, blank padded ( 1..31)
%F 文件时间格式 same as %Y-%m-%d
%g the 2-digit year corresponding to the %V week number
%G the 4-digit year corresponding to the %V week number
%h same as %b
%H 24小时制的小时 hour (00..23)
%I 12小时制的小时 hour (01..12)
%j 一年中的第几天 day of year (001..366)
%k 短格式24小时制的小时 hour ( 0..23)
%l 短格式12小时制的小时 hour ( 1..12)
%m 双位月份 month (01..12)
%M 双位分钟 minute (00..59)
%n 换行 a newline
%N 十亿分之一秒 nanoseconds (000000000..999999999)
%p 大写的当前域的上下午指示 locale’s upper case AM or PM indicator (blank in many locales)
%P 小写的当前域的上下午指示 locale’s lower case am or pm indicator (blank in many locales)
%r 12小时制的时间表示(时:分:秒,双位) time, 12-hour (hh:mm:ss [AP]M)
%R 24小时制的时间表示 (时:分,双位)time, 24-hour (hh:mm)
%s 自基础时间 1970-01-01 00:00:00 到当前时刻的秒数 seconds since `00:00:00 1970-01-01 UTC’ (a GNU extension)
%S 双位秒 second (00..60); the 60 is necessary to accommodate a leap second
%t 横向制表位(tab) a horizontal tab
%T 24小时制时间表示 time, 24-hour (hh:mm:ss)
%u 数字表示的星期(从星期一开始 1-7)day of week (1..7); 1 represents Monday
%U 一年中的第几周星期天为开始 week number of year with Sunday as first day of week (00..53)
%V 一年中的第几周星期一为开始 week number of year with Monday as first day of week (01..53)
%w 一周中的第几天 星期天为开始 0-6 day of week (0..6); 0 represents Sunday
%W 一年中的第几周星期一为开始 week number of year with Monday as first day of week (00..53)
%x 本地日期格式 locale’s date representation (mm/dd/yy)
%X 本地时间格式 locale’s time representation (%H:%M:%S)
%y 两位的年 last two digits of year (00..99)
%Y 年 year (1970…)
%z RFC-2822 标准时间格式表示的域 RFC-2822 style numeric timezone (-0500) (a nonstandard extension)
%Z 时间域 time zone (e.g., EDT), or nothing if no time zone is determinable

By default, date pads numeric fields with zeroes. GNU date recognizes
the following modifiers between `%’ and a numeric directive.

`-’ (hyphen) do not pad the field
`_’ (underscore) pad the field with spaces

--------------------------------------------------------------------------------

2、一些用法

1)#以yymmdd的格式输出43天前的当前时刻

date +%Y%m%d --date='43 days ago'       

 

2)# 测试十亿分之一秒
date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’;date +’%Y%m%d %H:%M:%S.%N’

3)#创建以当前时间为文件名的目录
mkdir `date +%Y%m%d`

 

4)#备份以时间做为文件名的
tar -cvf ./htdocs`date +%Y%m%d`.tar ./*

 

5)#显示时间后跳行,再显示目前日期 

date +%T%n%Y%m%d

 

6)#只显示月份与日数 

date +%B%d

 

7)#获取上周日期(day,month,year,hour)

date -d "-1 week" +%Y%m%d   

 

8)#获取24小时前日期

date --date="-24 hour" +%Y%m%d

 

9)#shell脚本里面赋给变量值

date_now=`date +%s`

 

10)#计算执行一段sql脚本的运行时间

 

TIME_BEGIN=$(date '+%s.%N')
$sqlcli < queries/q1.3.sql 1>> $FILE_RESULT  2>> $FILE_ERROR
TIME_END=$(date '+%s.%N')
TIME_RUN=$(awk 'BEGIN{print '$TIME_END' - '$TIME_BEGIN'}')

 

11)#编写shell脚本计算离自己生日还有多少天?

    read -p "Input your birthday(YYYYmmdd):" date1

  m=`date --date="$date1" +%m`    #得到生日的月

  d=`date --date="$date1" +%d`    #得到生日的日

  date_now=`date +%s`             #得到当前时间的秒值

  y=`date +%Y`                    #得到当前时间的年

  birth=`date --date="$y$m$d" +%s`      #得到今年的生日日期的秒值

  internal=$(($birth-$date_now))        #计算今日到生日日期的间隔时间

  if [ "$internal" -lt "0" ]; then             #判断今天的生日是否已过

  birth=`date --date="$(($y+1))$m$d" +%s`      #得到明天的生日日期秒值

  internal=$(($birth-$date_now))               #计算今天到下一个生日的间隔时间

  fi

  echo "There is :$((einternal/60/60/24)) days."       #输出结果,秒换算为天

 

 

12)#若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],

其中 MM 为月份,

DD 为日,

hh 为小时,

mm 为分钟,

CC 为年份前两位数字,

YY 为年份后两位数字,

ss 为秒数

 

13)

#显示目前的格林威治时间,也叫“世界时”。是英国的标准时间,也是世界各地时间的参考标准。中英两国的标准时差为8个小时,即英国的当地时间比中国的北京时间晚8小时。

date -u              
Thu Sep 28 09:32:04 UTC 2006

 

14)#修改时间

date -s
按字符串方式修改时间
可以只修改日期,不修改时间,输入: date -s 2007-08-03
只修改时间,输入:date -s 14:15:00
同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:date -s "2007-08-03 14:15:00"

修改完后,记得输入:clock -w
把系统时间写入CMOS

 
分享到:
评论

相关推荐

    LINUX与UNIX SHELL编程指南(很全)

    第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...

    shell 编程指南pdf

    第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...

    shell编程实验报告

    本次实验旨在帮助学生掌握基本的Shell编程技巧,包括但不限于创建并使用脚本的基本步骤、熟悉Bash的控制结构以及简单的Shell编程方法。通过实践,加深对Linux操作系统下脚本语言的理解和应用能力。 #### 实验内容...

    linux下shell编程实验报告-考勤系统

    1. **熟练掌握 Shell 程序的编辑、运行与调试方法**:这包括如何使用文本编辑器(如 Vim 或 Emacs)来创建脚本文件,如何使用命令行来执行脚本,以及如何使用调试工具来定位和解决问题。 2. **实现所有必需的功能**...

    shell编程PPT

    #### 七、Shell编程调试方法 在开发Shell脚本的过程中,可能会遇到各种错误。以下是一些常用的调试技巧: - **使用`set -x`**: - 在脚本开始处添加`set -x`可以开启调试模式,显示每条执行的命令。 - 示例代码: ...

    LINUX与UNIX SHELL编程指南 高清PDF

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    LINUX与UNIX SHELL编程指南5

    书中详细讲解了SHELL编程的基础概念、命令语法以及高级特性,为读者提供了一个全面的学习路径。以下是基于这个主题的详细知识点: 一、SHELL编程基础 SHELL作为UNIX和LINUX系统中的用户界面,是用户与操作系统之间...

    Linux下Shell编程[参照].pdf

    3. 执行 Shell 程序:可以使用三种方法执行 Shell 程序:直接执行、作为参数传递给 Shell 命令、添加到环境变量中。 例如: ``` [root@localhost bin]#vi date #!/bin/sh echo “ Mr.$USER,Today is:” echo &date ...

    Shell编程(2)之Shell编程进阶

    本文旨在深入探讨Shell编程中的关键控制结构,包括条件语句`if`、循环结构`for`和`while`以及选择语句`case`的高级应用。通过具体实例和实验任务,帮助读者更好地理解和掌握这些基本语法在实际开发中的运用。 ### 1...

    LINUX与UNIX SHELL编程指南LINUX与UNIX SHELL编程指南15

    在Linux和Unix系统中,Shell编程是系统管理与自动化任务的核心技能之一。本章专注于讲解如何有效地使用引号来避免解释器错误,确保脚本的正确执行。引号的使用对于保护变量、字符串和命令的完整性至关重要。 首先,...

    Linux shell编程 验证身份证号码(15/18)

    ### Linux Shell编程验证身份证号码 #### 核心功能: 此脚本主要实现了身份证号码的有效性检查和信息提取,支持15位和18位两种身份证号码格式。通过一系列逻辑判断和数学运算,确保了身份证号码的真实性,并能够...

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...

    LINUX 与 UNIX SHELL编程指南

    - **pingall、backup_gen、del.lines等**: 实际脚本例子,展示了脚本的编写和使用方法。 ### 运行级别脚本 - **了解系统中的运行级别目录**: 用于管理系统的运行级别。 - **inittab**: 系统启动时读取的配置文件。 ...

    shell编程 CD数据库

    10. **Readme文档**:通常包含项目的介绍、使用方法和可能的注意事项,是理解和使用项目的关键。 通过这个项目,我们可以学习到如何使用shell脚本来实现一个简单的数据库管理系统,这对于理解shell脚本的语法和功能...

    绝版经典《Linux与UNIX Shell编程指南》

    11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail将输出分类 109 11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件...

    Linux shell编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

Global site tag (gtag.js) - Google Analytics