亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2439 | 回復(fù): 7
打印 上一主題 下一主題

給出任意的日期,求得給出的日期是周幾 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2004-10-08 14:35 |只看該作者 |倒序?yàn)g覽
老長時間沒發(fā)貼了,拋塊半頭磚

首先,日期格式的判斷,日期的長度和數(shù)字字符等。
      數(shù)字字符的判斷可以用awk的match字符函數(shù),但實(shí)驗(yàn)時有副作用。
      只好用程序中的笨方法。
其次,就是求日期是周幾,利用cal的結(jié)果過濾后求得。
最后,屏幕顯示所得的結(jié)果。

#!/bin/sh
if [ $# -ne 1 ]
then
    echo "usage: $0 date(date of source data)";
    exit -1;
fi

DATA_DATE="$1"
FMT_CODE=`echo $DATA_DATE|awk '{
                                    date_len = length($1)
                                    if (date_len != {
                                        fmt_flag = 1
                                    } else {
                                        fmt_flag=0
                                        for (cnt=1; cnt<date_len+1; cnt++) {
                                            date_number=substr($1,cnt,1)
                                            if ( date_number<"0" ||
                                                 date_number>"9" {
                                                 fmt_flag=2
                                                 break
                                             }
                                        }
                                    }
                                    print fmt_flag
                              }'`;
if [ $FMT_CODE -ne 0 ]
then
    echo "---- Date format error [$FMT_CODE] ";
    exit -2;
else
    echo "---- Date [$DATA_DATE] format ok [$FMT_CODE] ";
fi

Year=`echo $DATA_DATE|awk '{print substr($1,0,4)}'`
Month=`echo $DATA_DATE|awk '{print substr($1,5,2)}' | sed 's/^0//'`
Day=`echo $DATA_DATE|awk '{print substr($1,7,2)}' | sed  's/^0//'`

Week=`cal -m $Month $Year | grep " $Day" |
      sed "s/${Day}.*$/${Day}\ /" |awk -F'|' '{
                                                   print length($1)/3
                                              }'`;
###
echo "--debug-- [$DATA_DATE] --- [$Week] !!!"
###

case $Week in
  1)
    echo "---- 1 Mon.   Monday"
    ;;
  2)
    echo "---- 2 Tues.  Tuesday"
    ;;
  3)
    echo "---- 3 Wed.   Wednesday"
    ;;
  4)
    echo "---- 4 Thurs. Thursday"
    ;;
  5)
    echo "---- 5 Fri.   Friday"
    ;;
  6)
    echo "---- 6 Sat.   Saturday"
    ;;
  7)
    echo "---- 7 Sun.   Sunday"
    ;;
  *)
    echo "---- ERROR!!!"
    ;;
esac

exit 0;

論壇徽章:
0
2 [報告]
發(fā)表于 2004-10-08 14:37 |只看該作者

給出任意的日期,求得給出的日期是周幾

咦,格式怎么亂了-再發(fā)一次
#!/bin/sh
if [ $# -ne 1 ]
then
    echo "usage: $0 date(date of source data)";
    exit -1;
fi

DATA_DATE="$1"
FMT_CODE=`echo $DATA_DATE|awk '{
                                    date_len = length($1)
                                    if (date_len != {
                                        fmt_flag = 1
                                    } else {
                                        fmt_flag=0
                                        for (cnt=1; cnt<date_len+1; cnt++) {
                                            date_number=substr($1,cnt,1)
                                            if ( date_number<"0" ||
                                                 date_number>"9" {
                                                 fmt_flag=2
                                                 break
                                             }
                                        }
                                    }
                                    print fmt_flag
                              }'`;
if [ $FMT_CODE -ne 0 ]
then
    echo "---- Date format error [$FMT_CODE] ";
    exit -2;
else
    echo "---- Date [$DATA_DATE] format ok [$FMT_CODE] ";
fi

Year=`echo $DATA_DATE|awk '{print substr($1,0,4)}'`
Month=`echo $DATA_DATE|awk '{print substr($1,5,2)}' | sed 's/^0//'`
Day=`echo $DATA_DATE|awk '{print substr($1,7,2)}' | sed  's/^0//'`

Week=`cal -m $Month $Year | grep " $Day" |
      sed "s/${Day}.*$/${Day}\ /" |awk -F'|' '{
                                                   print length($1)/3
                                              }'`;
###
echo "--debug-- [$DATA_DATE] --- [$Week] !!!"
###

case $Week in
  1)
    echo "---- 1 Mon.   Monday"
    ;;
  2)
    echo "---- 2 Tues.  Tuesday"
    ;;
  3)
    echo "---- 3 Wed.   Wednesday"
    ;;
  4)
    echo "---- 4 Thurs. Thursday"
    ;;
  5)
    echo "---- 5 Fri.   Friday"
    ;;
  6)
    echo "---- 6 Sat.   Saturday"
    ;;
  7)
    echo "---- 7 Sun.   Sunday"
    ;;
  *)
    echo "---- ERROR!!!"
    ;;
esac

exit 0;

論壇徽章:
0
3 [報告]
發(fā)表于 2004-10-08 14:40 |只看該作者

給出任意的日期,求得給出的日期是周幾

if (date_len != {

怎么成圓臉了,判斷的是長度8

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
4 [報告]
發(fā)表于 2004-10-08 15:57 |只看該作者

給出任意的日期,求得給出的日期是周幾

若用 gnu date 的話, try:
date -d "2004-01-01" +%w

論壇徽章:
0
5 [報告]
發(fā)表于 2004-10-08 16:04 |只看該作者

給出任意的日期,求得給出的日期是周幾

是呀,不是有現(xiàn)成的命令嗎?

寫什么腳本。

論壇徽章:
0
6 [報告]
發(fā)表于 2004-10-08 19:19 |只看該作者

給出任意的日期,求得給出的日期是周幾


  1. #!/bin/sh
  2. month=`echo $1|awk -F- '{print $2}'`
  3. year=`echo $1|awk -F- '{print $1}'`
  4. date=`echo $1|awk -F- '{print $3}'|sed 's/^0/ /g'`
  5. rm -rf  1.tmp
  6. cal $month $year|tail +2|grep "$date"|tr ' ' '\n'>1.tmp
  7. week=`cat -n 1.tmp |grep $date|awk '{print $1}'`
  8. case $week in
  9.   1) echo "Sunday"
  10.      ;;
  11.   2) echo "Monday"
  12.      ;;
  13.   3) echo "Tuesday"
  14.      ;;
  15.   4) echo "Wednesday"
  16.      ;;
  17.   5) echo "Thursday"
  18.      ;;
  19.   6) echo "Friday"
  20.      ;;
  21.   7) echo "Satday"
  22.      ;;
  23.   esac
  24. rm -rf 1.tmp
復(fù)制代碼

論壇徽章:
0
7 [報告]
發(fā)表于 2004-10-09 10:55 |只看該作者

給出任意的日期,求得給出的日期是周幾

小鷺:
您好
您的代碼中的兩個核心語句好像都有問題,讓我們來驗(yàn)證一下。
畢竟技術(shù)的東西是比較嚴(yán)謹(jǐn)?shù)。我們探討一下吧?br /> 我的代碼是經(jīng)過驗(yàn)證的。
第一句的執(zhí)行如下:
cal $month $year|tail +2|grep "$date"|tr ' ' '\n'>1.tmp
[
$ cal 8 2004|tail +2|grep 8|tr ' ' '\n'

8

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

]
第二句:
week=`cat -n 1.tmp |grep $date|awk '{print $1}'`

在上一句錯的情況下,這里根本得不到結(jié)果。

斑竹--網(wǎng)中人的方法中提到的是用 gnu date 的方法
使用簡單有效,只要在腳本中加上日期格式的驗(yàn)證就可以了。
date -d "2004-01-01" +%w

       %w     day of week (0..6);  0 represents Sunday

       %W     week number of year with Monday as first day of week (00..53)

論壇徽章:
0
8 [報告]
發(fā)表于 2004-10-09 13:02 |只看該作者

給出任意的日期,求得給出的日期是周幾

對不起,一時倏忽. 我寫的代碼有問題.
用 gnu date 效率最高
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP