shell的date命令:使用方法,以及小时、分钟的计算
shell命令格式严格,不像python那样命令行中可以添加空格。如等号两边无空格。有多余空格错误,日期date命令就是最明显的例子。
命令格式:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal][--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT][MMDDhhmm[[CC]YY][.ss]]
如:
date +%Y%m%d :以yyyymmdd格式输出(20111118)
date --date="1 day ago" +%Y%m%d :一天前的日期
date -d "-2 day 20111111" +%Y%m%d
"
for i in `seq 0 6` :循环看 参数顺序无关,命令都一样
do
date -d "$day +$i day" +%Y%m%d :正数可以省略符号
date +%Y%m%d -d "$day +$i day"
date +%Y%m%d -d "$i day $day "
date +%Y%m%d -d "+$i day $day "
date +%Y%m%d -d $day
done
格式注意
1,date后面每个空格之间都是一个独立的参数,分别看做整体,用双引号格式能看的更为清楚,如date "+%Y%m%d %H:%M:%S" -d "+1 hour"
i. -d“-2 day20111111”指定输出内容
ii. “+%Y%m%d”是一个整体,控制输出格式,+后面无空格
2,参数顺序无关,如
date -d "-2 day 20111111" +%Y%m%d
date +%Y%m%d -d "-2 day 20111111"
date +%Y%m%d -d "20111111 -2 day"
都一样。
3,独立参数有无双引号都行,
date -d 2014-02-13 +%s和date -d"2014-02-13" "+%s"是一样的,还有date -d'2014-02-13' +%s
时间字符串的转化:
用date 的输出格式控制实现,但“月日年”和“时分秒”必须分开处理,否则会无法识别。such as
2013-10-30 20:12:59 或者 20131030 20:12:59
注意:
1,二者用空格分割;
2,年月日作为整体,格式十分灵活,可以随意写。但时分秒必须用冒号”:”分开,否则无法识别。
1 date字符串与时间戳格式互转:
A)字符串转时间指定格式:
计算2011111前两天
date -d "-2 day 20111111" +%Y%m%d (输出为 20111109)
或者date --date="20130913"+%Y%m%d
B)字符串转换为时间戳:
date -d "2010-10-18 00:00:00" +%s (输出 1287331200)
-d参数指定字符串,+%s表示输出时间戳。
C)时间戳转换为字符串:
date -d '1970-01-01 UTC 1287331200 seconds' +"%Y-%m-%d %T"(输出2010-10-18 00:00:00)
或者直接用@符号
date -d @1287331200 "+%Y-%m-%d
D)时间戳的日期计算:
seconds=`date -d "2010-10-18 00:00:00" +%s` #得到时间戳
seconds_new=`expr $seconds + 86400` #加上一天的秒数86400
date_new=`date -d @$seconds_new "+%Y-%m-%d"` #获得指定日前加上一天的日前
2 分钟计算的两种方法:
1)date时间计算,输出用格式控制符:
date "+%Y-%m-%d %H:%M:%S" -d "-15 minute$yearof-$monthof-$dayof 20:12:59"
例子:
yearof="2013"
monthof="10"
dayof="30"
nowth=1
echo $nowth
echo $dayof
date "+%G-%m-%d %H:%M:%S" -d "2013-10-3020:12:59"
date "+%Y%m%d%H%M%S" -d "2013-10-30 20:12:59"
mytime=`date "+%Y-%m-%d %H:%M:%S" -d"$yearof-$monthof-$dayof 20:12:59"`
echo "$mytime is"
mytime=`date "+%Y-%m-%d %H:%M:%S" -d "-15 minute$yearof-$monthof-$dayof 20:12:59"`
echo "$mytime now is"
nowtime=`date "+%Y%m%d%H%M%S" -d"$yearof-$monthof-$dayof 20:12:59"`
#time must be with :, if no, wrong
echo "$nowtime is"
nowtime=`date "+%Y%m%d%H%M%S" -d "-15 minute${yearof}${monthof}${dayof} 20:12:59"`
echo "$nowtime now is"
2)转为时间戳计算:
#date "+%Y-%m-%d %H:%M:%S" -d "20131030203859"
#date -d "$yearof-$monthof-$dayof 14:32:12" +%s
#date -d "$yearof-$monthof-$dayof 14:32:12" +%s
3 屏蔽字符串,如分和秒归0:
true_time="2013-09-15 15:36:11"
start_time=`date "+%Y%m%d%H0000" -d"$true_time"`
echo $start_time
##mytime=`date -d "$start_time" "+%s"`#invalid
test_time=`date "+%Y-%m-%d %H:00:00" -d"$true_time"`
echo $test_time
#转时间戳
start_time=`date -d "$test_time" "+%s"`
echo $start_time
4 按日期循环执行的shell:
oneday="20141103"
dbname="wizad"
set -x
for i in `seq 0 60`
do
onedayid=$(date -d"${oneday} +$i day" +%Y-%m-%d)
hive -e "use${dbname};
alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='3') location'/user/wizad/data/wizad/raw/${onedayid}/3_1/';
alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='5') location'/user/wizad/data/wizad/raw/${onedayid}/5_1/';
"
done
5 一些date常用案例:
1,将增加时间变成秒
time2=$((1*60*60+20*60))
echo$time2
4800
2,两个时间相加,计算出结果时间
time1=$(date +%s -d '1990-01-01 01:01:01')
time1=$(($time1+$time2))
time1=$(date +%Y-%m-%d\ %H:%M:%S -d"1970-01-01 UTC $time1 seconds");
echo $time1
1990-01-01 02:21:01
3,时间差计算方法
如:2010-01-01 与 2009-01-01 11:11:11 时间差
原理:同样转成时间戳,然后计算天,时,分,秒
time1=$(($(date +%s -d '2010-01-01') -$(date +%s -d '2009-01-01 11:11:11')));
echo time1
将time1 / 60 秒,就变成分了。
4,小时的计算:
date#当前时间
current_time=`date "+%Y-%m-%d%H:00:00" -d "-1 hour"` #取一小时前的时间,分秒清零
echo $current_time
start_time=`date -d"$current_time" "+%s"`#转化为时间戳
echo $start_time
end_time=`date "+%Y%m%d %H:%M:%S"-d "+1 hour ${current_time}"`#
echo $end_time
my_time=`date "+%Y-%m-%d%H:00:00"`
echo $my_time
上面两个都是取当前时间的分秒清零。
t_time=`date -d "$my_time""+%s"`
echo $t_time
t2_time=$((start_time+3600)) #注意,转化为时间戳后可以直接计算,用shell的简便计算符$((表达式)),直接求出一小时后的时间(时间戳格式)
echo $t2_time
shell的date命令:使用方法,以及小时、分钟的计算的更多相关文章
- javascript 的Date 格式化, 模仿shell中date命令的格式
原文:javascript 的Date 格式化, 模仿shell中date命令的格式 shell 中显示当前的日期 [root@localhost]$ date '+%Y-%m-%d %H:%M:%S ...
- 在shell下执行命令的方法
在shell下执行命令的方法 1. #!/bin/sh 语法:在shell.sh的开头写入 #!/bin/sh 一般的shell脚本就是这种用法.这种方法调用脚本开头的shell执行命令,子shell ...
- Linux date命令使用方法
date命令用来显示或设定以及计算系统的日期和时间.本文主要描述date命令的基本语法和工作中常用的使用方法. date命令语法 用法:date [OPTION]... [+FORMAT] 常用参数: ...
- (转载)shell中用date命令获取昨天、明天或者多天前的日期
(转载)http://blog.sina.com.cn/s/blog_3e4774e30100p0yv.html 使用date命令获取日期很方便,最近需要获取当前日期的下一天日期在linux应该如何获 ...
- hbase基本概念和hbase shell经常使用命令使用方法
HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用H ...
- shell中date命令对month进行加减操作的bug
shell脚本中如何取上个月的月份呢?很容易能想到下面的命令: date +%Y%m -d '-1 month' 或者 date +%Y%m -d 'last month' 在大部分情况下这个命令 ...
- shell的date日期循环方法:日期格式转时间戳计算,再将时间戳转回日期格式
1,日期对象转时间戳current_day 2,计算增量的时间戳,即循环每步的增量one_day 3,循环体计算,日期变量加增量后重新赋值自己 4,时间戳转回日期格式后输出 current_day=2 ...
- date命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/qmfsun/p/4598650.html date "+今天是%Y-%d-%m,现在是%H:%M:%S&qu ...
- date命令使用总结【转载】
本文转载自:http://blog.sina.com.cn/s/blog_674b5aae0100o0w9.html 由于跨年.跨月.闰平年等特殊性,在日常编程过程中对日期的处理总是异常麻烦.目前,各 ...
随机推荐
- Template基础
模板系统的介绍 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now ...
- Android 5.0新控件——FloatingActionButton(悬浮按钮)
Android 5.0新控件--FloatingActionButton(悬浮按钮) FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影 ...
- 实现Android5.0过渡动画兼容库
Android5.0之后为我们提供了许多炫酷的界面过渡效果,其中共享元素过渡也是很有亮点的一个效果,但这个效果只能在Android5.0之后使用,那今天我们就来将共享元素过渡效果兼容到Android4 ...
- Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名
Android源码浅析(五)--关于定制系统,如何给你的Android应用系统签名 今天来点简单的我相信很多定制系统的同学都会有一些特定功能的需求,比如 修改系统时间 静默安装 执行某shell命令 ...
- vbs注册表增删改
vbs注册表增删改非常简单.过去竟然能忍受那么多次手动在注册表编辑器操作...应该认真反思自己的懒惰了. Dim op Set op=WScript.CreateObject("WScrip ...
- JAVA面向对象-----局部内部类
局部内部类 局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类. 访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员. 注意:局部内部类只能访问所在函数的fana ...
- AsnycTask的内部的实现机制
AsnycTask的内部的实现机制 写在前面 我们为什么要用AsnycTask. 在Android程序开始运行的时候会单独启动一个进程,默认情况下所有 这个程序操作都在这个进程中进行.一个Androi ...
- Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在新的Xcode中之前可以正常运行的SKAudioNode代码 ...
- 【Netty源码学习】DefaultChannelPipeline(三)
上一篇博客中[Netty源码学习]ChannelPipeline(二)我们介绍了接口ChannelPipeline的提供的方法,接下来我们分析一下其实现类DefaultChannelPipeline具 ...
- FFmpeg的H.264解码器源代码简单分析:熵解码(Entropy Decoding)部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...