2019-11-27 18:23:03 u010953692 阅读数 56
  • Java大数据培训学校全套教程-常用对象(21)

    Java大数据培训学校视频课程:"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学 校一次,完全可以找个java工程师的工作了。 本门课程为"java大数据培训学校全套教材"系列课程的第二十一篇,通过学习Array对象,等相关概念让大家对常用对象编程打下好的基础。

    4652 人正在学习 去看看 马克

linux date 格式化输出

1,linux date 格式化输出

# date "+%Y-%m-%d %H:%M"
2019-11-27 18:19

参考:

  1. Linux下date命令,格式化输出,时间设置
2014-11-04 13:56:15 u010359663 阅读数 28
  • Java大数据培训学校全套教程-常用对象(21)

    Java大数据培训学校视频课程:"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学 校一次,完全可以找个java工程师的工作了。 本门课程为"java大数据培训学校全套教材"系列课程的第二十一篇,通过学习Array对象,等相关概念让大家对常用对象编程打下好的基础。

    4652 人正在学习 去看看 马克
# date "+%Y"
2014
# date "+%Y-%m"
2014-12
# date "+%Y-%m+"
2014-12+
# date "+%Y-%M+"
2014-05+
# date "+%Y-%m+"
2014-12+
# date "+%Y-%m-%d"
2014-12-04
# date "+%Y-%m-%D"
2014-12-12/04/14
# date "+%D"
12/04/14
# date "+%D%T"
12/04/1410:06:25
# date "+%D%T"
12/04/1410:06:27
# date "+%D-%T"
12/04/14-10:06:29
# date "+%D-%T"
12/04/14-10:06:30
# date "+%D-%T"
12/04/14-10:06:31
# date "+%day-%T"
04ay-10:06:33
# date "+%D-%T"
12/04/14-10:06:36
# date "+%D-%T"
12/04/14-10:06:36
# date "+%F-%T"
2014-12-04-10:06:38
# date "+%F %T"
2014-12-04 10:06:48





在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便,
以下是我在工作中积累的关于date命令的用法,绝大多数都有解释说明,并配有范例,记录了linux中date命令的各种特定时间的表示方法,如何修改为特定的时间等,相信读者在认真读完并领会接下来的范例之后,一定会对date命令更加熟练,达到举一反三的效果,从而可以任意表示想要表示的时间,也就可以任意调整服务器的时间了,这其中有网上的各中学习资料,也有date自身的man手册,也有很多同事的智慧,也有个人的独立学习,在此也感谢各位前辈的的贡献和各位同事积极的帮助。如果本文中有错误之处,请联系QQ:349871740,欢迎指正^_^
1、以下是服务器现在的时间,当前时间的各种表示方法,表示成自己想要的时间格式,后面的范例将会在这个时间基础之上进行演示,同时这也是熟练掌握后面各种date命令的前提,请读者注意
# date
2012年 07月 19日 星期四 20:11:16 CST
读者可以设定特定的格式,格式设定规则:一个加号后接数个标记,每个标记中都有%,其中可用的标记列表和说明如下:
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..59)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区 %a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)

按照特定的格式输出时间:短接符"-"、空格" "和冒号":" 为分隔符,其中空格前面加了转义符号"\"
# date +%Y-%m-%d\ %H:%M:%S
2012-07-19 21:10:28
在当前时间的基础上往前推或者往后推三天
# date -d "+3 day"
2012年 07月 22日 星期日 20:12:08 CST
# date -d "-3 day"
2012年 07月 16日 星期一 20:12:12 CST
在当前时间的基础上往前推或者往后推三个月
# date -d "-3 month"
2012年 04月 19日 星期四 20:12:39 CST
# date -d "+3 month"
2012年 10月 19日 星期五 20:12:48 CST
在当前时间的基础上往前推或者往后推三年
# date -d "+3 year"
2015年 07月 19日 星期日 20:13:06 CST
# date -d "-3 year"
2009年 07月 19日 星期日 20:13:11 CST
在当前时间的基础上往前推或者往后推三小时
# date -d "-3 hour"
2012年 07月 19日 星期四 17:13:20 CST
# date -d "+3 hour"
2012年 07月 19日 星期四 23:13:24 CST
在当前时间的基础上往前推或者往后推三分钟
# date -d "+3 minute"
2012年 07月 19日 星期四 20:16:56 CST
# date -d "-3 minute"
2012年 07月 19日 星期四 20:10:59 CST
在当前时间的基础上往前推或者往后推三十秒
# date && date -d "-30 second"
2012年 07月 19日 星期四 20:14:24 CST
2012年 07月 19日 星期四 20:13:54 CST
# date && date -d "+30 second"
2012年 07月 19日 星期四 20:14:29 CST
2012年 07月 19日 星期四 20:14:59 CST
2、接下来的范例说明如何用date来表示各种各样的时间,表示的都是某一天的零点时间,也可以在当前的时分秒的基础上表示时间,(特别注意中间用到了反单引号`)参见范例
date -d `date +%y%m01` #本月第一天
# date -d `date +%y%m01`
2012年 07月 01日 星期日 00:00:00 CST
date -d `date +%y%m01`"-1 day" #上个月最后一天
# date -d `date +%y%m01`"-1 day"
2012年 06月 30日 星期六 00:00:00 CST
date -d `date -d "-3 month" +%y%m01`"-1 day" #4个月前的第一天
# date -d `date -d "-3 month" +%y%m01`"-1 day"
2012年 03月 31日 星期六 00:00:00 CST
date -d `date -d "+12 month" +%y%m01`"-1 day" #第11个月后的第一天
# date -d `date -d "+12 month" +%y%m01`"-1 day"
2013年 06月 30日 星期日 00:00:00 CST
date -d `date -d "-1 month" +%y%m01` #上个月第一天
# date -d `date -d "-1 month" +%y%m01`
2012年 06月 01日 星期五 00:00:00 CST

date -d `date -d "+12 month" +%y%m01` #第12个月后的第一天
# date -d `date -d "+12 month" +%y%m01`
2013年 07月 01日 星期一 00:00:00 CST
date -d `date -d "-1 day" +%Y%m%d` #前一天零点时间
# date -d `date -d "-1 day" +%Y%m%d`
2012年 07月 18日 星期三 00:00:00 CST
date -d `date -d "-3 day" +%Y%m%d` #前三天零点时间
# date -d `date -d "-3 day" +%Y%m%d`
2012年 07月 16日 星期一 00:00:00 CST
date -d `date -d "+1 day" +%Y%m%d` #明天零点时间
# date -d `date -d "+1 day" +%Y%m%d`
2012年 07月 20日 星期五 00:00:00 CST
date -d `date -d "+3 day" +%Y%m%d` #往后推三天零点时间
# date -d `date -d "+3 day" +%Y%m%d`
2012年 07月 22日 星期日 00:00:00 CST

3、以下简单示范了字母大小写在date命令中的区别
Y #代表完整的年份,例如:2012年 将显示 2012
y #代表缩写年份,例如:2012年 缩写为 12
# date +"%y%m01%H%M%S"
121201121556
# date +"%Y%m01%H%M%S"
20121201121610
4、以下范例说明如何调整服务器的时间
ntpdate 210.72.145.44 #将服务器时间调整为正常时间,210.72.145.44 是国家授时中心服务器IP地址
# ntpdate 210.72.145.44
19 Jul 13:07:07 ntpdate[15150]: adjust time server 210.72.145.44 offset -0.020920 sec
date 121212122012 #将时间设置为2012年 12月 12日 星期三 12:12:00,date后面的数字代表月日时分年,还可以加秒,需要后面跟英文状态下的句号字符".",例如:121212122012.12
# date 121212122012
2012年 12月 12日 星期三 12:12:00 CST
# date 121212122012.12
2012年 12月 12日 星期三 12:12:12 CST
# date `date -d "1 day ago" +%m%d%H%M%Y.%S`
2012年 07月 18日 星期三 20:13:04 CST
# date
2012年 07月 18日 星期三 20:13:10 CST
# date `date -d "3 days ago" +%m%d%H%M%Y.%S`
2012年 07月 15日 星期日 20:13:18 CST
# date `date -d "5 days ago" +%m%d%H%M%Y.%S`
2012年 07月 10日 星期二 20:13:28 CST
# date `date -d "$((3600*24)) seconds ago" +%m%d%H%M%Y.%S`
2012年 07月 09日 星期一 20:13:39 CST
# date `date -d "$((3600*24)) seconds ago" +%m%d%H%M%Y.%S`
2012年 07月 08日 星期日 20:14:01 CST
# ntpdate 210.72.145.44
19 Jul 20:14:15 ntpdate[26846]: step time server 210.72.145.44 offset 950404.037565 sec
参考页面:1、http://www.cnblogs.com/xd502djj/archive/2010/12/29/1919478.html
写在最后,由于博客的编辑功能限制,某些字符显示在页面上不是很明显,特意将个人的本地同名总结文档上传上来,如果读者看着页面中的不习惯,可以下载附件阅读。


用途说明
ate命令可以用来显示和修改系统日期时间,注意不是time命令。



常用参数
格式:date

显示当前日期时间。



格式:date mmddHHMM

格式:date mmddHHMMYYYY

格式:date mmddHHMM.SS

格式:date mmddHHMMYYYY.SS

设置当前日期时间,只有root用户才能执行,执行完之后还要执行 clock -w 来同步到硬件时钟。

mm为月份,dd为日期,HH为小时数,MM为分钟数,YYYY为年份,SS为秒数。



格式:date +FORMAT

根据指定格式显示当前时间。比如 date +%Y-%m-%d 就是以 YYYY-mm-dd 的形式显示当前日期,其中YYYY是年份,mm为月份,dd为日期。



常用FORMAT

%Y YYYY格式的年份(Year)

%m mm格式的月份(),01-12

%d dd格式的日期(day of month),01-31

%H HH格式的小时数(),00-23

%M MM格式的分钟数(),00-59

%S SS格式的秒数(),00-59

%F YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T HH-MM-SS格式的时间(Time),同%H:%M:%S

%s 自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w 星期几,0-6,0表示星期天

%u 星期几,1-7,7表示星期天

注意以上格式是可以任意组合的,还可以包括非格式串,比如 date "+今天是%Y-%d-%m,现在是$H:%M:%S"

更多格式 man date 或 info date



格式:date -d STRING

格式:date --date=STRING

格式:date -d STRING +FORMAT

显示用STRING指定的日期时间(display time described by STRING, not ‘now’)。



格式:date -s STRING

格式:date --set=STRING

设置当前时间为STRING指定的日期时间。



STRING可谓变化多样,支持很多种日期时间的描述方式。下面列举一些常用的日期表示方式,希望能够举一反三。

指定日期:

date -d YYYY-mm-dd

指定时间,日期是今天:

date -d HH:MM:SS

指定日期时间:

date -d "YYYY-mm-dd HH:MM:SS"

指定1970年以来的秒数:

date -d '1970-01-01 1251734400 sec utc' (2009年 09月 01日 星期二 00:00:00 CST)

date -d '1970-01-01 1314177812 sec utc' (2011年 08月 24日 星期三 17:23:32 CST)

今天:

date

date -d today

date -d now

明天:

date -d tomorrow

date -d next-day

date -d next-days

date -d "next day"

date -d "next days"

date -d "+1 day"

date -d "+1 days"

date -d "1 day"

date -d "1 days"

date -d "-1 day ago"

date -d "-1 days ago"

昨天:

date -d yesterday

date -d last-day

date -d last-days

date -d "last day"

date -d "last days"

date -d "-1 day"

date -d "-1 days"

date -d "1 day ago"

date -d "1 days ago"

前天:

date -d "2 day ago"

date -d "2 days ago"

date -d "-2 day"

date -d "-2 days"

大前天:

date -d "3 day ago"

date -d "3 days ago"

date -d "-3 day"

date -d "-3 days"

上周,一周前:

date -d "1 week ago"

date -d "1 weeks ago"

上个星期五(不是上周五):

date -d "last-friday"

date -d "last friday"

上月,一月前:

date -d last-month

date -d last-months

date -d "-1 month"

date -d "-1 months"

下月,一月后:

date -d next-month

date -d next-months

date -d "+1 month"

date -d "+1 months"

去年,一年前:

date -d last-year

date -d last-years

date -d "-1 year"

date -d "-1 years"

明年,一年后:

date -d next-year

date -d next-years

date -d "+1 year"

date -d "+1 years"

一小时前:

date -d "last-hour"

date -d "last-hours"

date -d "1 hour ago"

date -d "1 hours ago"

一小时后:

date -d "1 hour"

date -d "1 hours"

一分钟前:

date -d "1 minute ago"

date -d "1 minutes ago"

一分钟后:

date -d "1 minute"

date -d "1 minutes"

一秒前:

date -d "1 second ago"

date -d "1 seconds ago"

一秒后:

date -d "1 second"

date -d "1 seconds"



使用示例
示例一 显示和设置日期时间
# date
2011年 08月 20日 星期六 17:37:11 CST
# date 08220942
2011年 08月 22日 星期一 09:42:00 CST

# clock -w
# date
2011年 08月 22日 星期一 09:42:01 CST
#



示例二 显示指定日期时间
# date
2011年 08月 23日 星期二 07:41:03 CST
# date -d next-day +%Y%m%d
20110824
# date -d next-day +%F
2011-08-24
# date -d next-day '+%F %T'
2011-08-24 07:41:47
# date -d last-day '+%F %T'
2011-08-22 07:43:46
#
# date -d yesterday '+%F %T'
2011-08-22 07:44:31
# date -d tomorrow '+%F %T'
2011-08-24 07:45:19
# date -d last-month +%Y%m
201107
# date -d next-month +%Y%m
201109
# date -d next-year +%Y
2012
#



示例三 写一个脚本来计算母亲节和父亲节的日期
母亲节(每年5月的第二个星期日 )

  2005年5月8日

  2006年5月14日

  2007年5月13日

  2008年5月11日

  2009年5月10日

  2010年5月9日

  2011年5月8日

  2012年5月13日

父亲节(6月第三个星期日),下面是最近几年的父亲节日期

  2005年6月19日
  2006年6月18日
  2007年6月17日
  2008年6月15日
  2009年6月21日
  2010年6月20日
  2011年6月19日

  2012年6月17日



下面是Linux查看某年某月的日历的方式。
# cal 5 2012
五月 2012
日 一 二 三 四 五 六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


下面的脚本用来计算指定年份的母亲节和父亲节的日期。

Bash脚本:calc_date.sh

Bash代码 收藏代码
#!/bin/sh

# 母亲节(每年5月的第二个星期日 )
# usage: mother_day [year]
mother_day()
{
local may1 # 5月1日
if [ "$1" ]; then
may1=$1-05-01 # 也可以是是$1/05/01
else
may1=5/1 # 也可以是05/01,但不能是05-01
fi
#date -d $may1
# 看5月1日是星期几
local w=(date+may1) # %w 0=星期天 1-6=星期一到六
#echo $w
if [ $w -eq 0 ]; then # 如果是5月1日星期天,就跳过一个星期
date +%F -d "$may1 +1 week"
else # 如果5月1日不是星期天,就跳过两个星期,再减去w天
date +%F -d "may1+2week−w day"
fi
}

# 父亲节(每年6月的第三个星期日)
# usage: father_day [year]
father_day()
{
local june1 # 保存6月1日的日期
if [ "$1" ]; then
june1=$1-06-01
else
june1=6/1
fi
# 因为采用1-7表示星期几,简化了计算逻辑
local w=(date+june1) # %u 7=星期天,1-6=星期一到六
date +%F -d "june1+3week−w day"
}

# usage: ./calc_date.sh [year]
if [ "$1" ]; then
echo Mother Day of year $1 is (motherday"1")
echo Father Day of year $1 is (fatherday"1")
else
echo Mother Day of this year is $(mother_day)
echo Father Day of this year is $(father_day)
fi



# ./calc_date.sh
Mother Day of this year is 2011-05-08
Father Day of this year is 2011-06-19
# ./calc_date.sh 2011
Mother Day of year 2011 is 2011-05-08
Father Day of year 2011 is 2011-06-19
# ./calc_date.sh 2010
Mother Day of year 2010 is 2010-05-09
Father Day of year 2010 is 2010-06-20
# ./calc_date.sh 2009
Mother Day of year 2009 is 2009-05-10
Father Day of year 2009 is 2009-06-21
# ./calc_date.sh 2008
Mother Day of year 2008 is 2008-05-11
Father Day of year 2008 is 2008-06-15
# ./calc_date.sh 2007
Mother Day of year 2007 is 2007-05-13
Father Day of year 2007 is 2007-06-17
# ./calc_date.sh 2006
Mother Day of year 2006 is 2006-05-14
Father Day of year 2006 is 2006-06-18
# ./calc_date.sh 2005
Mother Day of year 2005 is 2005-05-08
Father Day of year 2005 is 2005-06-19
# ./calc_date.sh 2012
Mother Day of year 2012 is 2012-05-13
Father Day of year 2012 is 2012-06-17
2015-04-10 14:48:56 liyonghui123 阅读数 219
  • Java大数据培训学校全套教程-常用对象(21)

    Java大数据培训学校视频课程:"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学 校一次,完全可以找个java工程师的工作了。 本门课程为"java大数据培训学校全套教材"系列课程的第二十一篇,通过学习Array对象,等相关概念让大家对常用对象编程打下好的基础。

    4652 人正在学习 去看看 马克

 

 

 

linux date得到上一小时的时间:

 

date -d "-1 hour" "+%Y-%m-%d-%H"
昨天的时间
date -d '-1 day' '+%Y-%m-%d %T'
明天的时间
date -d 1day '+%Y-%m-%d %T'
一周前
date -d '-1 week' '+%Y-%m-%d %T'
一个月前
date -d '-1 month' '+%Y-%m-%d %T'
一年前
date -d '-1 year' '+%Y-%m-%d %T'
 
 
 
2017-10-26 17:45:30 ManagementAndJava 阅读数 289
  • Java大数据培训学校全套教程-常用对象(21)

    Java大数据培训学校视频课程:"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学 校一次,完全可以找个java工程师的工作了。 本门课程为"java大数据培训学校全套教材"系列课程的第二十一篇,通过学习Array对象,等相关概念让大家对常用对象编程打下好的基础。

    4652 人正在学习 去看看 马克

本节回顾下 date 和随机数的情况吧,前辈们写的都比较好,在此主要对以下几篇博文做简化与总结,方便以后适合自己回顾
重参博文:
1 》》Linux date命令及系统时间设置
2 》》我使用过的Linux命令之date - 显示、修改系统日期时间
3 》》Linux shell实现随机数的多种方法
4 》》Linux cksum用法


  • 显示系统当前的时间
    • date
  • 显示目前的格林威治时间
    • date -u
  • 以指定的格式显示系统当前的时间
    • date +Format
    • date +%Y-%m-%d

Format的形式如下:

  • %Y YYYY格式的年份(Year)
  • %m mm格式的月份(),01-12
  • %d dd格式的日期(day of month),01-31

  • %H HH格式的小时数(),00-23
  • %M MM格式的分钟数(),00-59
  • %S SS格式的秒数(),00-59
  • %p : 显示本地 AM 或 PM

  • %w 星期几,0-6,0表示星期天

  • %u 星期几,1-7,7表示星期天


  • %F YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

  • %T HH-MM-SS格式的时间(Time),同%H:%M:%S

  • %s 自1970年以来的秒数。

  • %N 从上一秒开始到现在的纳秒数

注意以下大小写的区别:

  • %a : 星期几 (Sun-Sat)
  • %A : 星期几 (Sunday-Saturday)
  • %b : 月份 (Jan-Dec)
  • %B : 月份 (January-December)
  • %c : 直接显示日期与时间
  • %d : 日 (01-31)
  • %D : 直接显示日期 (mm/dd/yy)

注意以上格式是可以任意组合的,还可以包括非格式串,比如 date “+今天是%Y-%d-%m,现在是$H:%M:%S”


  • 显示用STRING指定的日期时间
    • date -d STRING
    • date –date=STRING
    • date -d STRING +FORMAT

实例:

  • 指定日期:date -d YYYY-mm-dd
    • date -d “2011-12-23”
  • 指定时间,日期是今天:date -d HH:MM:SS
    • date -d “12:23:56”
  • 指定日期时间:date -d “YYYY-mm-dd HH:MM:SS”
    • date -d “2011-09-21 10:2:4”
  • 指定1970年以来的秒数:
    • date -d ‘1970-01-01 1251734400 sec utc’ (2009年 09月 01日 星期二 00:00:00 CST)
  • 今天:date
    • date -d today
    • date -d now
  • 几(n)天前:date -d “+n days ago”
  • 几(n)天后 : date -d “-n days ago”
  • 几(n)周前:date -d “+n weeks ago”
  • 几(n)周后:date -d “-n weeks ago”
  • 几(n)月前:date -d “+n months ago”
  • 几(n)月后:date -d “-n months ago”
  • 几(n)年前:date -d “+n years ago”
  • 几(n)年后:date -d “-n years ago”
  • 相应的有 时 分 秒

  • 设置当前时间为STRING指定的日期时间。
    • 格式:date -s STRING
    • 格式:date –set=STRING


Linux 产生随机数

1. 通过时间获得随机数

$ date +%s
1287764773
#获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数
#如果用它做随机数,相同一秒的数据是一样的。在做循环处理,多线程里面基本不能满足要求了。

$ date +%N
738710457
#获得当前时间的纳秒数据,精确到亿分之一秒。
#这个相当精确了,就算在多cpu,大量循环里面,同一秒里面,也很难出现相同结果,不过不同时间里面还会有大量重复碰撞

$ date +%s%N
1287764807051101270
#这个可以说比较完美了,加入了时间戳,又加上了纳秒

1.2 通过时间来获得随机数。

#!/bin/sh
#获得随机数返回值,shell函数里算出随机数后,更新该值

function random(){
    min=$1   #函数内建变量接受传入的第一个参数
    max=$2   #函数内建变量接受传入的第二个参数
    num=$(date +%s%N) #以时间戳和纳秒形式产生一个唯一数
    retnum=$((num%max+nin)) #产生一个[min max]随机数
    #进行求余数运算即可
    echo $retnum
    #这里通过echo 打印出来值,然后获得函数的,stdout就可以获得值
    #还有一种返回,定义全价变量,然后函数改下内容,外面读取
}

#得到1-10的seq数据项
for i in {1..10}
do 
    out=$(random 11 20)//接受函数的标准输出
    echo $i,"[11,20]",$out
done

2. 内部系统变量($RANDOM)

其实,linux已经提供有个系统环境变量了,直接就是随机数,
$ echo $RANDOM
#产生一个[0, 32767)随机数
$RANDOM * $max / 32767 + 1;
#产生一个[1, max) 随机数;
$RANDOM % 900 + 100
#产生一个三位数的随机数;

3. 读取linux 的uuid码

linux的uuid码也是有内核提供的,在/proc/sys/kernel/random/uuid这个文件内,在使用hibernate 生成主键时,我们经常用这个,所以在这就不错介绍了;


$ cat /proc/sys/kernel/random/uuid
dff68213-b700-4947-87b1-d9e640334196

$ cat /proc/sys/kernel/random/uuid
7b57209a-d285-4fd0-88b4-9d3162d2e1bc
#连续2次读取,得到的uuid是不同的

 $ cat /proc/sys/kernel/random/uuid| cksum | cut -d ' ' -f 1

2141807556

#同上方法得到随机整数
2012-08-16 13:46:44 sunboy_2050 阅读数 51982
  • Java大数据培训学校全套教程-常用对象(21)

    Java大数据培训学校视频课程:"java大数据培训学校全套教材"系列课程由750集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学 校一次,完全可以找个java工程师的工作了。 本门课程为"java大数据培训学校全套教材"系列课程的第二十一篇,通过学习Array对象,等相关概念让大家对常用对象编程打下好的基础。

    4652 人正在学习 去看看 马克

显示时间是个常用的命令,在写shell脚本中也经常会用到与日期相关文件名或时间显示。无论是linux还是windows下都是date命令。

Linux下date命令用法

  • date [OPTION]… [+FORMAT]
  • date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

 

date命令参数

  • -d, –date=STRING  显示STRING指定的时间
  • -f, –file=DATEFILE  类似–date参数显示DATEFILE文件中的每行时间
  • -ITIMESPEC, –iso-8601[=TIMESPEC]  以ISO  8601 格式显示日期/时间。TIMESPEC为”date”(只显示日期)、”hours”、”minutes”、”senconds”(显示时间精度)之一,默认为”date”。
  • -r, –reference=FILE  显示文件的最后修改时间
  • -R, –rfc-2822  以RFC-2822兼容日期格式显示时间
  • -s, –set=STRING  设置时间为STRING
  • -u, –utc, –universal  显示或设定为Coordinated Universal Time时间格式

date命令输出显示格式

  • %%    字符%
  • %a     星期的缩写(Sun..Sat)
  • %A    星期的完整名称 (Sunday..Saturday)
  • %b     月份的缩写(Jan..Dec)
  • %B     月份的完整名称(January..December)
  • %c     日期时间(Sat Nov 04 12:02:33 EST 1989)
  • %C     世纪(年份除100后去整) [00-99]
  • %d     一个月的第几天(01..31)
  • %D     日期(mm/dd/yy)
  • %e     一个月的第几天 ( 1..31)
  • %F    日期,同%Y-%m-%d
  • %g     年份(yy)
  • %G     年份(yyyy)
  • %h     同%b
  • %H    小时(00..23)
  • %I     小时(01..12)
  • %j     一年的第几天(001..366)
  • %k     小时( 0..23)
  • %l      小时( 1..12)
  • %m    月份(01..12)
  • %M    分钟(00..59)
  • %n     换行
  • %N     纳秒(000000000..999999999)
  • %p     AM or PM
  • %P     am or pm
  • %r     12小时制时间(hh:mm:ss [AP]M)
  • %R    24小时制时间(hh:mm)
  • %s     从00:00:00 1970-01-01 UTC开始的秒数
  • %S     秒(00..60)
  • %t     制表符
  • %T    24小时制时间(hh:mm:ss)
  • %u     一周的第几天(1..7);  1 表示星期一
  • %U     一年的第几周,周日为每周的第一天(00..53)
  • %V     一年的第几周,周一为每周的第一天 (01..53)
  • %w     一周的第几天 (0..6);  0 代表周日
  • %W    一年的第几周,周一为每周的第一天(00..53)
  • %x     日期(mm/dd/yy)
  • %X     时间(%H:%M:%S)
  • %y     年份(00..99)
  • %Y     年份 (1970…)
  • %z     RFC-2822 风格数字格式时区(-0500)
  • %Z     时区(e.g., EDT), 无法确定时区则为空


以下是做的一些实验,便于理解


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

$ date -d "2010-11-15 23:00:01"
Mon Nov 15 23:00:01 PST 2010
$ date -d "2010/11/15 23:0:2"
Mon Nov 15 23:00:02 PST 2010
$ date -d "2010/11/15T23:0:2"
Mon Nov 15 08:00:02 PST 2010
$
$ echo "2010-11-15 23:00:01" > date.txt
$ echo "2010/11/15 23:00:02" >> date.txt
$ cat date.txt
2010-11-15 23:00:01
2010/11/15 23:00:02
$ date -f date.txt
Mon Nov 15 23:00:01 PST 2010
Mon Nov 15 23:00:02 PST 2010
$
$ ls -l
total 4
-rw-r--r-- 1 znan sybase    40 Nov 15 21:14 date.txt
$ date -r date.txt
Mon Nov 15 21:14:36 PST 2010
$
$ date -I
2010-11-15
$ date -Ihours
2010-11-15T21-0800
$ date -Iminutes
2010-11-15T21:16-0800
$ date -Iseconds
2010-11-15T21:16:24-0800
$
$ date -R
Mon, 15 Nov 2010 21:47:08 -0800
$ date -u
Tue Nov 16 05:47:13 UTC 2010
$
$ date +"Today is %A."
Today is Monday.
$ date +"Date:%b. %e, %G"
Date:Nov. 15, 2010
$ date +"Date: %b.%e, %G"
Date: Nov.15, 2010
$ date +"%x %X"
11/15/2010 09:50:21 PM
$ date +"%Y-%m-%d %H:%M:%S"
2010-11-15 21:51:32
$ date +"%Y-%m-%d %I:%M:%S %p"
2010-11-15 09:51:55 PM

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

Linux date 常用时间格式

date=$(date "+%Y-%m-%d___%H:%M:%S")

echo date

2012-08-16___05:52:20


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

2012-08-16

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

Linux date 日期加减运算

date            // 默认时间格式

Thu Aug 16 05:42:38 UTC 2012


date +"%b %e, %G"            // 定制格式

Aug 16, 2012


date +"%b %e, %G" -d'-1 day'        date -d'-1 day' +"%b %e, %G"    // 减一天(加一天类似)

Aug 15, 2012


date +"%b %e, %G" -d'+1 month'    date -d'+1 month+"%b %e, %G"      // 加一月(减一月类似)

Sep 16, 2012


date +"%Y年%m月%d日"

2012年08月20日


date +"%Y年%m月%d日" -d'-1 day'    // 同上面加减1天(或加减1月)

2012年08月19日


date +"%Y年%-m月%d日"     // %-m 去除月份对其的

2012年8月20日

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

Ubuntu 修改系统时间

sudo date -s MM/DD/YY

sudo date -s hh:mm:ss

注意,这里说的是系统时间,是linux由操作系统维护的。

在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。


如果要确保修改的硬件时间生效,可以执行如下命令。
 sudo dwclock -w   或 sudo clock -w(ubuntu下有时候无法用clock -w 没有这个命令 如果没有就 使用这个hwclock -w
这个命令强制把系统时间写入CMOS。

 

查看硬件时间

 sudo hwclock --show

$ sudo hwclock --show
Thursday, August 16, 2012 PM04:46:32 UTC  -0.664019 seconds

 

核心提示:让VMware虚拟机上的ubuntu10.10时间与网络同步

 每次启动虚拟机后,ubuntu10.10的时间都不合适,发现需要这样设置:

系统–>系统管理–>时间和日期
时区选择:Asia/Chongqing
配置选择:与互联网服务器保持同步
(这时提示需要安装名称为ntp的软件,安装即可,安装后提示要替换一个文件,选择“替换“)
时间服务器选择:time.nuri.net(Korea,Asia)



查看文件命令:ls -l  ls -l --time-style=long-iso 




参考推荐:

date命令用法详解(日期格式)

Java Date 和 Calendar

C#日期格式参考小结

如何修改Ubuntu Linux的时间

CentOS 6 时间,时区,设置修改及时间同步


Linux Date

阅读数 12

linux date命令详解

阅读数 191

linux之date命令

阅读数 87

没有更多推荐了,返回首页