当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Shell中日期运算
帖子发表于 : 2007-11-27 19:04 

注册: 2007-09-06 16:24
帖子: 193
地址: 中国上海
送出感谢: 0 次
接收感谢: 0 次
引用:
#!/bin/sh

###############################
# A Bourne Shell Script #
# 功能: 打印昨天的日期 #
# 输出格式: Year Month Day #
################################

# 设置当前的年、月、日
month=`date +%m`
day=`date +%d`
year=`date +%Y`

# 月份加0,使得月份成为“整型” :)
month=`expr $month + 0`

# 当前日期减一,得到昨天的日子
day=`expr $day - 1`

# 如果上面得到的昨天的日子为0的话就得考虑月份了
if [ $day -eq 0 ]; then
# 当前月份减一得到上一个月份
month=`expr $month - 1`
# 如果上面得到的上一个月份为0的话就得考虑年份了
if [ $month -eq 0 ]; then
month=12
day=31
year=`expr $year - 1`
# 如果月份非0就需要确定当前月份的天数
else
case $month in
1|3|5|7|8|10|12) day=31;;
4|6|9|11) day=30;;
2)
if [ `expr $year % 4` -eq 0 ]; then
if [ `expr $year % 400` -eq 0 ]; then
day=29
elif [ `expr $year % 100` -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi

# 打印出昨天的年、月、日
echo $year $month $day
exit 0

上面是一个得到昨天日期的SHELL,其实十天后的可以类推的。
基本的思想是一样的。
1. expr运算符;
2. 关于跨月、跨年的判断。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-11-27 20:29 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
不如编程软件的库了。这个不是shell强项。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-11-29 10:02 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
这个.自己搞的话,容易出错的,练手还可以.


_________________
关注我的blog: ε==3


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-12-07 21:51 

注册: 2007-11-10 10:57
帖子: 32
送出感谢: 0 次
接收感谢: 0 次
直接用date命令不就行了?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译