博客文章除注明转载外,均为原创。转载请注明出处。
本文链接地址:http://blog.chinaunix.net/uid-31396856-id-5780967.html
1.Linux date的用法
(1)
UTC (Universal Time Coordinated,UTC)世界协调时间
CST (China Standard Time UTC+8:00)中国沿海时间(北京时间)
GMT (Greenwich Mean Time)格林威治标准时间
(2)设置时间
date -s "01:01:01 2017-12-12"
//这样可以设置全部时间
date -s
"01:01:01 20171212" //这样可以设置全部时间
date -s
"2017-12-12 01:01:01" //这样可以设置全部时间
date -s
"20171212 01:01:01" //这样可以设置全部时间
(3)时间的格式:
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%b : 月份 (Jan..Dec)
%m : 月份 (01..12)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
date -d today +"%Y-%m-%d %H:%M:%S"
# date -d today +"%Y-%m-%d %H:%M:%S"
2017-12-12 15:10:29
今天表示:date +%Y%m%d
# date +%Y%m%d
20171212
昨天表示:date +%Y%m%d --date="-1 day"
# date +%Y%m%d --date="-1 day"
20171211
(4)时间的运算-加减
date +%Y%m%d //显示现在天年月日
date +%Y%m%d --date="+1 day" //显示后一天的日期
date +%Y%m%d --date="-1 day" //显示前一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
2.时钟相关(hwclock/clock)
(1)查看硬件时间
hwclock --show
clock --show
(2)设置硬件时间
hwclock --set --date="12/07/17 10:30:00" (月/日/年 时:分:秒)
clock --set --date="12/07/0615 10:30:00" (月/日/年 时:分:秒)
(3)硬件时间和系统时间的同步
硬件时钟与系统时钟同步:
hwclock --hctosys(hc代表硬件时间,sys代表系统时间)
或者
clock --hctosys
系统时钟和硬件时钟同步:
hwclock --systohc
或者
clock --systohc
3.时间和时间戳
日期: 年-月-日 如: '2017-12-08' 范围从0001-1-1至9999-12-31
时间: 小时数:分钟数:秒数 如:'23:59:59'
时间戳: 年-月-日 小时数:分钟数:秒数(.微妙数) 如: '2017-12-08 23:59:59.59'
4.Linux下时间和时间戳的转化
系统时间精度到s
转换指定日期为Unix时间戳:
date -d '2017-10-01 00:00:00' +%s
Unix时间戳转换为日期时间:
date -d @1506787200 +"%Y-%m-%d %H:%M:%S"
# date -d '2017-10-01 00:00:00' +%s
1506787200
# date -d @1506787200 +"%Y-%m-%d %H:%M:%S"
2017-10-01 00:00:00
# date -d '2017-10-01 00:00:00.123' +%s
1506787200
#date -d "@1506787200" +"%Y%m%d %H:%M:%S"
20171001 00:00:00
也可以用awk的时间函数(strftime)
#echo "1506592730" |awk '{print strftime ("%F %T",$0)}'
2017-09-28 17:58:50
4.数据库时间和时间戳的转化
数据库时间精度到微秒
select from_unixtime(1506787200000/1000); 时间戳/1000
select unix_timestamp('2017-10-01 00:00:00')*1000
下面是MySQL中的演示:
mysql> select unix_timestamp('2017-10-01 00:00:00')*1000;
+--------------------------------------------+
| unix_timestamp('2017-10-01 00:00:00')*1000 |
+--------------------------------------------+
| 1506787200000 |
+--------------------------------------------+
mysql> select from_unixtime(1506787200000/1000);
+-----------------------------------+
| from_unixtime(1506787200000/1000) |
+-----------------------------------+
| 2017-10-01 00:00:00.0000 |
+-----------------------------------+
1 row in set (0.00 sec)
mysql> select from_unixtime(1506787200);
+---------------------------+
| from_unixtime(1506787200) |
+---------------------------+
| 2017-10-01 00:00:00 |
+---------------------------+
5. 数据库日期时间配置
oracle设置默认时间格式:
nls_date_format参数里面设置时间格式:
yyyy-mm-dd hh24:mi:ss' scope=spfile
mysql时间格式:
(root@127.0.0.1:)[(none)]> show variables like '%date%format';
+-----------------+-------------------+
| Variable_name | Value |
+-----------------+-------------------+
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
---The End
阅读(7413) | 评论(0) | 转发(0) |