免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6944 | 回复: 10
打印 上一主题 下一主题

如何在shell里面计算日期? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-24 10:39 |只看该作者 |倒序浏览
我现在是想用:

DATE=$(date +%Y%m%d)

得到的是今天的日期

如果我想得到前两周内的每天的日期,该如何做呢??

因为可能遇到现在是月初,可能减去两周(7天)就跑上个月去了,那样的话,需要处理闰月的问题

我想问问诸位兄台有没有更好的办法,不去处理闰月,将问题简单化呢.

请赐教,不胜感激!

论坛徽章:
0
2 [报告]
发表于 2008-04-24 10:41 |只看该作者
初步想法是:用时间戳减,然后换算日期??不知道能否实现.

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2008-04-24 11:00 |只看该作者
http://bbs.chinaunix.net/viewthr ... p;page=1#pid4559524

如果是gnu date 直接用 -d选项,如果是其它的参考上面的一些文章

论坛徽章:
0
4 [报告]
发表于 2008-04-24 11:04 |只看该作者
shall i  install  a  gnu date  on  unix  or  anyother  like-unix  system?

论坛徽章:
0
5 [报告]
发表于 2008-04-24 15:17 |只看该作者
写完了,谢谢楼上各位朋友

#!/bin/bash
#desc:clear the bak file of before 14 days ago in every day.
#see:crontab -e
#date:2008.4.24
#author:dougq
export NOW_DATELINE=$(date +%s)
export SECOND_TOTAL=$[24*3600*15]
export BEFORE_DATELINE=$[$NOW_DATELINE-$SECOND_TOTAL]
export BEFORE_NOW_YMD=`date -d '1970-01-01 UTC '$BEFORE_DATELINE' seconds' +%Y%m%d`
export BASE_DIR="/data3/Backup/Oracle/TRSWCM52/old_backup"
export DEL_FILE1="$BASE_DIR/TRSWCM52_Oracle_bak_$BEFORE_NOW_YMD.dmp"
export DEL_FILE2="$BASE_DIR/TRSWCM52_Oracle_bak_$BEFORE_NOW_YMD.log"
export DEL_FILE3="$BASE_DIR/TRSWCM_PLUGINS_Oracle_bak_$BEFORE_NOW_YMD.dmp"
export DEL_FILE4="$BASE_DIR/TRSWCM_PLUGINS_Oracle_bak_$BEFORE_NOW_YMD.log"
if [ -f $DEL_FILE1 ]; then
  rm -rf $DEL_FILE1;
  #echo "$DEL_FILE1 is deleted!"
fi
if [ -f $DEL_FILE2 ]; then
  rm -rf $DEL_FILE2;
  #echo "$DEL_FILE2 is deleted!"
fi
if [ -f $DEL_FILE3 ]; then
  rm -rf $DEL_FILE3;
  #echo "$DEL_FILE3 is deleted!"
fi
if [ -f $DEL_FILE4 ]; then
  rm -rf $DEL_FILE4;
  #echo "$DEL_FILE4 is deleted!"
fi

论坛徽章:
0
6 [报告]
发表于 2009-03-09 17:44 |只看该作者

回复 #1 dougq 的帖子

用得着这么麻烦吗?


#date -I -d '-n day'(可以得到N天前的日期,格式为YYYY-MM-DD)
#date –d '-n day' "+%Y%m%d" (可以得到N天前的日期,格式为YYYYMMDD)

论坛徽章:
0
7 [报告]
发表于 2009-03-09 20:57 |只看该作者
写一个函数输入日期,获得该天的昨天

需要注意,1号,1月,需要分别对月和年做减1操作

除2月外每月天数是固定的,可以用一个数组存起来,
set 数组名 各月天数空格分开

直接用 数组名[月份] 就可获得

能够被4整除,但不能被100整除或者能被4整除,也能被400整除的年份是闰年
需要特别处理 数组名[2] = 29

论坛徽章:
0
8 [报告]
发表于 2009-03-09 21:38 |只看该作者
-3d 这样

论坛徽章:
0
9 [报告]
发表于 2009-05-05 18:17 |只看该作者

回复 #6 zdm 的帖子

hp-unix 下呢 你用过这个系统没?

论坛徽章:
0
10 [报告]
发表于 2009-05-05 21:23 |只看该作者
今天发现一个偷懒的做法 利用cal
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP