免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: nkliyong
打印 上一主题 下一主题

俺写了几个关于日期的小函数  关闭 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
41 [报告]
发表于 2007-11-08 14:08 |只看该作者
不如用date


#!/bin/bash
#计算010101 5日后
date -d "010101  5 days" "+%Y%m%d"
#计算010101 5日前
date -d "010101 5 days ago" "+%Y%m%d"
#计算前一天
date -d "last day" "+%Y%m%d"
#计算上个月末
date -d "$(date '+%Y%m01') 1 days ago" "+%Y%m%d"
#计算两个日期间有多少天数
echo $(($(($(date -d "020202" "+%s")-$(date -d "010101" "+%s")))/$((60*60*24))))


就是最后一个有点麻烦!

[ 本帖最后由 yunzhongyue 于 2007-11-8 14:36 编辑 ]

论坛徽章:
0
42 [报告]
发表于 2008-01-18 13:49 |只看该作者
原帖由 yunzhongyue 于 2007-11-8 14:08 发表
不如用date


#!/bin/bash
#计算010101 5日后
date -d "010101  5 days" "+%Y%m%d"
#计算010101 5日前
date -d "010101 5 days ago" "+%Y%m%d"
#计算前一天
date -d "last day" "+%Y%m%d"
#计算上个月 ...



版主是什么意思? 不知道为何我运行不了你的这些命令。

怎么计算当前时间5天后的日期,用一条命令能实现吗?

论坛徽章:
0
43 [报告]
发表于 2008-01-30 11:54 |只看该作者

回复 #1 nkliyong 的帖子

#计算某日后若干天日期
应该先判断days是否大于0,如果大于0,才应该执行mm=`expr $mm + 1`

[ $days -gt 0 ] && mm=`expr $mm + 1`

论坛徽章:
0
44 [报告]
发表于 2008-01-30 16:29 |只看该作者

回复 #41 yunzhongyue 的帖子

这样也可以实现, 也是借助date命令

#!/bin/sh

day=$1
interval=`expr $2 \* 60 \* 60 \* 24`

daysec=`date -d $day +%s`
resultsec=`expr $daysec + $interval`

result=`date -d "1970-01-01 UTC $resultsec sec" +%Y%m%d`

echo "result: $result"


运行结果:
#./getDateByInterval.sh 20080101 7
result: 20080108
# ./getDateByInterval.sh 20080101 -7
result: 20071225

论坛徽章:
0
45 [报告]
发表于 2008-03-04 17:41 |只看该作者
#计算某日后若干天日期
#修改下原来的
[ $mm -gt 12 ]  && mm=1 && yy=`expr $yy + 1`
#修改为
[ $mm -gt 12 ] && [ $sav_dd -gt 31 ] && mm=1 && yy=`expr $yy + 1`
这样解决了过了一年后的问题

论坛徽章:
0
46 [报告]
发表于 2008-03-05 10:23 |只看该作者
确实实用啊,好东西~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP