LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1929|回复: 21

合并:日期时间处理 [keywords:date 年月日 日历 时间]

[复制链接]
发表于 2003-12-2 20:03:46 | 显示全部楼层 |阅读模式
  1. DATELINE=`date +%Y%m%d -d '${COUNTER} day ago'`
复制代码


$COUNTER这个变量怎么也认不到

请执教
发表于 2003-12-2 22:14:08 | 显示全部楼层

回复: DATELINE=`date +%Y%m%d -d '${COUNTER} day ago'`

最初由 battosai 发表
  1. DATELINE=`date +%Y%m%d -d '${COUNTER} day ago'`
复制代码


$COUNTER这个变量怎么也认不到

请执教

单引号无法解释变量!
  1. [/home/javalee/]COUNTER=10
  2. [/home/javalee]DATELINE=`date +%Y%m%d -d "$COUNTER day ago"`
  3. [/home/javalee]echo $DATELINE
  4. 20031122
复制代码
 楼主| 发表于 2003-12-3 14:27:09 | 显示全部楼层

如何取以前的时间段??

如下:
  1. #!/bin/bash

  2. cd ~/tmp
  3. echo -n "请输入程式代码(e.g. mkrecr91) : "
  4. read COB_name
  5. echo -n "您要哪天的数据(e.g. 20030811) : "
  6. read DATE_need
  7. echo -n "您要几天的数据(e.g. 8) : "
  8. read NDAY_need

  9. TMP_FILE=`echo $COB_name | tr  '[a-z]'  '[A-Z]'`

  10. COUNTER=0
  11. while [ $COUNTER -lt $NDAY_need ]
  12. do
  13. COUNTER=`expr $COUNTER + 1`
  14. DATELINE=`date +%Y%m%d -d "$COUNTER day ago"`

  15. if [ "$COB_name" != "" ] || [ "$DATE_need" != "" ] || [ "$NDAY_need" != "" ]
  16.   then
  17.   echo 9^M"$DATELINE"^M |rr "$COB_name"   #要生成的数据
  18. fi
  19. sed 's/^M//g' $TMP_FILE.y |sed 's/^L//g'
  20. done>>myneed_file
复制代码


其中
  1. DATELINE=`date +%Y%m%d -d "$COUNTER day ago"`
复制代码

里的$COUNTER变量问题,您已经帮我解决了

我写的shell是为了,只要我输入了一个日期,然后输入一个数字

如输入日期为20031118,数字为3
就可以得到20031118、20031119、20031120三天的数据

现在那个日期都不知道怎么取了

我发觉下面都是没用的
  1. DATELINE=`date +%Y%m%d -d "$COUNTER day ago"`
复制代码


请大家执教
发表于 2003-12-3 15:07:12 | 显示全部楼层
;) man date
发表于 2003-12-3 15:16:59 | 显示全部楼层
要不你把你的tmp贴出来~~,然后说明你想要的结果~~,我想这样更感性一些 ;)
 楼主| 发表于 2003-12-3 15:25:59 | 显示全部楼层
man date 得不到我要的答案
 楼主| 发表于 2003-12-3 15:32:46 | 显示全部楼层
  1. #!/bin/bash
  2. echo -n "您要哪天的数据(e.g. 20030811) : "
  3. read DATE_need
  4. echo -n "您要几天的数据(e.g. 8) : "
  5. read NDAY_need

  6. COUNTER=0
  7. while [ $COUNTER -lt $NDAY_need ]
  8. do
  9. COUNTER=`expr $COUNTER + 1`
  10. .
  11. .
  12. .
  13. done
复制代码


假如我输入日期为20031108
然后输入3
想得到的结果是
20031108
20031109
20031110

基本没有TMP文件呀,我现在就是想把$COUNTER和$DATE_need联系起来
发表于 2003-12-4 23:30:17 | 显示全部楼层
COUNTER=0
while (( $COUNTER <  $DATE_need )) ; do
      day=`date -d "+$COUNTER day" +"%d"`
        month=`date -d "+$COUNTER day" +"%m"`
        year=`date -d "+$COUNTER day" +"%Y"`
echo $year$month$day
let COUNTER++
done
 楼主| 发表于 2003-12-5 09:56:48 | 显示全部楼层

欢迎新版主^^

最初由 lordbyorn 发表
COUNTER=0
while (( $COUNTER <  $DATE_need )) ; do
      day=`date -d "+$COUNTER day" +"%d"`
        month=`date -d "+$COUNTER day" +"%m"`
        year=`date -d "+$COUNTER day" +"%Y"`
echo $year$month$day
let COUNTER++
done


上面的$DATE_need应该改为$NDYA_need吧,但是还是没跟$DATE_need联系起来哦这样的还是以现在为起点的时间段,取以前的时间段还是。。。。

chinaunix上有人用

d=`echo ${DATE_need} + ${COUNTER}|bc`

但这样的话不能控制从11月跳到12月,比如输入日期为
20031120,COUNTER输入20,echo $d就变成20031140啦

大家一起来讨论讨论呀:cool:
发表于 2003-12-5 14:41:10 | 显示全部楼层
最初由 battosai 发表
  1. #!/bin/bash
  2. echo -n "您要哪天的数据(e.g. 20030811) : "
  3. read DATE_need
  4. echo -n "您要几天的数据(e.g. 8) : "
  5. read NDAY_need
  6. COUNTER=0
  7. while [ $COUNTER -lt $NDAY_need ]
  8. do
  9. COUNTER=`expr $COUNTER + 1`
  10. .
  11. .
  12. .
  13. done
复制代码

假如我输入日期为20031108
然后输入3
想得到的结果是
20031108
20031109
20031110

基本没有TMP文件呀,我现在就是想把$COUNTER和$DATE_need联系起来

把你的样本文件贴出来~~,我认为应该不是很难~
BTW:这两天有点事,一直没来~~,辛苦lordbyorn兄啦~ ;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表