Shell日期时间和时间戳的转换
Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.tar
所以查找了下Shell里时间转换的方法,记录如下备忘。
Linux下时间转换的一些命令:
- date +%s 可以得到UNIX的时间戳;
- 用shell将日期时间与时间戳互转:
date -d "2015-08-04 00:00:00" +%s 输出:1438617600
- 而时间戳转换为字符串可以这样做:
date -d @1438617600 "+%Y-%m-%d" 输出:2015-08-04
- 如果需要得到指定日期的前后几天:
seconds=`date -d "2015-08-04 00:00:00" +%s` #得到时间戳
seconds_new=`expr $seconds + 86400` #加上一天的秒数86400
date_new=`date -d @$seconds_new "+%Y-%m-%d"` #获得指定日前加上一天的日前
修改gitlab备份文件名的脚本:
#!/bin/bash
backup_path=${1-.}
echo Specified Gitlab backup path is : $backup_path
for i in `find $backup_path -mtime 0 -iregex '^.*1[0-9]+_gitlab_backup.tar$' -exec basename {} \;`
do
time_stamp=`echo $i | cut -d'_' -f1`
new_name=`date -d @$time_stamp "+%Y-%m-%d"`
new_file=${new_name}_gitlab_backup.tar
mv $backup_path/$i $backup_path/$new_file
echo Moved backup file from name $i to $new_file
done
- 正则表达式时间戳以1开头,可以匹配到2033年,够用。
- 脚本执行放入crontab,在gitlab backup之后
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
0 4 * * * /bin/bash /data/gitlab/backups/refine.sh /data/gitlab/backups >> /data/gitlab/backups/cron.log 2>&1
Shell日期时间和时间戳的转换的更多相关文章
- mysql小知识点汇总---(时间与时间戳的转换, 修改mysql用户名密码, navicate 导入sql文件报错 1153)
1. 时间与时间戳的转换 1.1 时间戳转时间 FROM_UNIXTIME(add_time, '%Y-%m-%d') 1.2 时间转时间戳 UNIX_TIMESTAMP('2015-04-29') ...
- js 时间与时间戳的转换
一:时间转时间戳:javascript获得时间戳的方法有四种,都是通过实例化时间对象 new Date() 来进一步获取当前的时间戳 1.var timestamp1 = Date.parse(n ...
- sql server 日期时间与字符串的转换
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- javascript 时间与时间戳的转换
一:时间转时间戳:javascript获得时间戳的方法有五种,都是通过实例化时间对象 new Date() 来进一步获取当前的时间戳 1.var timestamp1 = Date.parse(new ...
- python 时间和时间戳的转换
对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种: 将时间转换 ...
- .NET / C# 时间与时间戳的转换
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数. 我们在计算时间戳时应为1970年01月01日到指定时间. 应当注 ...
- Python时间和时间戳互相转换
# 将时间变成时间戳 def tranftimestamp(stringtime): try: return time.mktime(time.strptime(stringtime, "% ...
- 在C#中进行时间和时间戳的转换
一.时间转换为 毫秒时间戳 由于 UTC 和 中国时区有时间差, 所以我们在时间转换为时间戳的时候, 我们需要多减去8个小时的时区差. // 时间转换为 毫秒时间戳 public static dou ...
- JS时间和时间戳的转换
时间转为时间戳 timeToTimestamp(time){ let timestamp = Date.parse(time) return timestamp; } 时间戳转为本地时间 timest ...
随机推荐
- jquery跨域调用wcf
使用jquery跨域调用wcf服务的时候会报如下错误 $.ajax({ url: 'http://localhost:28207/Service1.svc/GetData', method: 'get ...
- 一键清理Windows垃圾的BAT文件代码
@echo off color 0atitle win7一键清理系统垃圾echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★ ...
- python中split与join
1.split个人最喜欢的就是它能使输入的一连串数字变为list. str=raw_input("some ") str2=str.split(" ") str ...
- 《高性能javascript》读书笔记
1.每个<script>加载时都会阻塞其他文件(图片.音乐等)的同时加载,同时浏览器会在js代码执行时停止渲染Dom.所以为了减少界面加载的卡顿和空白发生,应尽力将js代码或者文件放在&l ...
- NOJ1008-第几天
第几天 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 2701 测试通过 : 800 ...
- ED/EP系列6《扩展应用》
包括:电子钱包复合应用:电子钱包灰锁应用. 1. 复合应用模式 Ø INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化): Ø UPDATE CAPP DATA CACHE( ...
- Linux 虚拟机和物理机配互信出现无法连接
配置文件位置:[root@hank-yoon data]# vi /etc/ssh/sshd_configPermitRootLogin yes 在物理机中,装完系统,默认情况下PermitRootL ...
- poj 2560 Freckles
题目连接 http://poj.org/problem?id=2560 Freckles Description In an episode of the Dick Van Dyke show, li ...
- poj 2887 Big String
题目连接 http://poj.org/problem?id=2887 Big String Description You are given a string and supposed to do ...
- bzoj 1798 [Ahoi2009]Seq 维护序列seq
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1798 线段树区间更新: 1. 区间同同时加上一个数 2. 区间同时乘以一个数 #inclu ...