Chinaunix

标题: 菜鸟求助-请大家帮忙!!!!谢谢 [打印本页]

作者: usercool    时间: 2008-11-25 10:27
标题: 菜鸟求助-请大家帮忙!!!!谢谢
给一个固定日期时间,加8小时,然后计算出新的日期时间,考虑到夸日夸月夸年,solari 8系统!高手帮忙写一下啊!!!!
作者: blackold    时间: 2008-11-25 10:28
标题: 回复 #1 usercool 的帖子
没有环境。看一下你的date.
作者: ly5066113    时间: 2008-11-25 10:39
http://bbs.chinaunix.net/viewthread.php?tid=986444
作者: 寂寞烈火    时间: 2008-11-25 10:40
原帖由 usercool 于 2008-11-25 10:27 发表
给一个固定日期时间,加8小时,然后计算出新的日期时间,考虑到夸日夸月夸年solari 8系统!高手帮忙写一下啊!!!!

Solaris吧?
夸日夸月夸年 , hehe
作者: usercool    时间: 2008-11-25 10:45
原帖由 blackold 于 2008-11-25 10:28 发表
没有环境。看一下你的date.



start_date=2008-11-25
start_time=10:00:00
取的是文件中时间和日期,因为他不是标准时间,需要在start_time 加上8小时
作者: adminsinx    时间: 2008-11-25 11:25
关注中。。。。
作者: usercool    时间: 2008-11-25 18:07
标题: 回复 #1 usercool 的帖子
那位高手帮忙写写啊,
start_date=${yearid}"-"${mounthid}"-"${dayid}
start_time=10:00:00

在文件里取出start_date 和start_time,需要把start_time加8小时,我考虑到了跨天,夸月,夸年
作者: biglazybug    时间: 2008-11-25 19:02
这时候就感觉gnu的date好啊
作者: usercool    时间: 2008-11-25 20:40
标题: 回复 #2 blackold 的帖子
start_date=2008-11-25
start_time=10:00:00
取的是文件中时间和日期,因为他不是标准时间,需要在start_time 加上8小时
date -d 不能用,系统是sum solaris 8
作者: WinnerBoy    时间: 2008-11-25 21:06
夸日夸月夸年
作者: hotsnow    时间: 2008-11-25 22:08
bash 下通过测试 。 solaris 下用bash 也可以,自己改改吧。

还有,你标题信息含量为 0

#!/bin/sh -x

# 当前时间
Y=$(date +%Y)
M=$(date +%m)
D=$(date +%d)
H=$(date +%H)

# Month_Day 是当前月的大天数
[ $(($Y % 4)) -eq 0 ] && Month_Day=29 || Month_Day=28

if [ $M -eq 2 ]; then
        Month_Day=$Feb_Day
elif $( echo "1 3 5 7 8 10 12"| grep $M ); then
        Month_Day=31
else
        Month_Day=30
fi

# 年判断
Month_Add()
{
        if [ $M -lt 12 ]; then
                Month=$(($M + 1))
                Year=$Y
        else
                Month=01
                Year=$(($Y + 1))
        fi
        echo Month $Month
}

# 日期判断
Day_Add()
{
        if [ $D -lt $Month_Day ]; then
                Day=$(($D + 1))
                Month=$M
                Year=$Y
        else
                Day=01
                Month_Add
        fi
}

# 时间判断
if [ $H -lt 16 ]; then
        Hour=$(($H + )
        Day=$D
        Month=$M
        Year=$Y
else
        Hour=$(($H - 16))
        Day_Add
fi

# 输出加 8 小时后的 时间
echo ${Year}_${Month}_${Day}_${Hour}

[ 本帖最后由 hotsnow 于 2008-11-25 22:13 编辑 ]
作者: ly5066113    时间: 2008-11-25 22:14
标题: 回复 #9 usercool 的帖子
有 cal 命令么?
作者: usercool    时间: 2008-11-25 23:55
标题: 回复 #10 WinnerBoy 的帖子
呵呵,看来是没人帮写了,solaris 的时间处理真的是很麻烦
作者: spyman    时间: 2008-11-26 00:02
date +%Y%m%d%H -d '8 hour'
作者: walkerxk    时间: 2008-11-26 00:23
原帖由 spyman 于 2008-11-26 00:02 发表
date +%Y%m%d%H -d '8 hour'

nonGNUdate 没有-d参数。
作者: hotsnow    时间: 2008-11-26 00:26
原帖由 spyman 于 2008-11-26 00:02 发表
date +%Y%m%d%H -d '8 hour'


你的回复让我再一次认识到我是多么的无知!
作者: walkerxk    时间: 2008-11-26 00:53
原帖由 hotsnow 于 2008-11-26 00:26 发表


你的回复让我再一次认识到我是多么的无知!

solaris下的date不是GNU date,所以没有-d参数。
我的回复会不会让你感到更无知呢
开玩笑的,不准打我头。
作者: hotsnow    时间: 2008-11-26 01:11
原帖由 walkerxk 于 2008-11-26 00:53 发表

solaris下的date不是GNU date,所以没有-d参数。
我的回复会不会让你感到更无知呢
开玩笑的,不准打我头。


这次恰巧我测试的solaris下面的date 有 -d 参数,呵呵

-bash-3.00$ uname -a
SunOS solaris 5.10 Generic_118855-33 i86pc i386 i86pc Solaris
-bash-3.00$ date +%Y%m%d%H -d '8 hour'
2008112609



[ 本帖最后由 hotsnow 于 2008-11-26 01:13 编辑 ]
作者: usercool    时间: 2008-11-27 17:32
原帖由 WinnerBoy 于 2008-11-25 21:06 发表
夸日夸月夸年



是啊,从文件中取出时间 + 8小时,当然要考虑到夸日夸月跨年了
作者: usercool    时间: 2008-11-27 17:35
原帖由 hotsnow 于 2008-11-25 22:08 发表
bash 下通过测试 。 solaris 下用bash 也可以,自己改改吧。

还有,你标题信息含量为 0

#!/bin/sh -x

# 当前时间
Y=$(date +%Y)
M=$(date +%m)
D=$(date +%d)
H=$(date +%H)

# Month_Day 是当前 ...


谢谢哥们!!
作者: usercool    时间: 2008-11-27 17:36
原帖由 hotsnow 于 2008-11-26 01:11 发表


这次恰巧我测试的solaris下面的date 有 -d 参数,呵呵

-bash-3.00$ uname -a
SunOS solaris 5.10 Generic_118855-33 i86pc i386 i86pc Solaris
-bash-3.00$ date +%Y%m%d%H -d '8 hour'
2008112609
...



我的系统是solaris 5.8 , 老版本的系统了,10我这边没这个环境
作者: usercool    时间: 2008-11-27 19:33
原帖由 hotsnow 于 2008-11-26 00:26 发表


你的回复让我再一次认识到我是多么的无知!



solaris 8下面确实没有date -d 参数, date -d "2004/06/04 20:30:00" +%s,是没办法执行的,但是date +%Y%m%d%H -d '8 hour' 是可以!!
作者: beyondfly    时间: 2008-11-27 23:18
关注一下
作者: edei2004    时间: 2008-11-28 09:49
Solaris直接用SHELL来进行时间的计算太复杂了,一般碰到时间的加减直接让oracle来做,用其返回的值即可....




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2