分页: 1 / 2

如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 16:26
novesky
如题,输入参数为年份

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 16:33
ljj_jjl2008
如果是我在windows下开发,会建立一个数据库,里面建立数据表,存放所需要的数据:公元1年1月1日是星期几,哪些年份是润年,平年每个月多少天,润年每个月多少天等等。

然后遍界面,写sql语句,先通过sql语句生成指定年份的日历,再通过sql语句过滤出是星期二的,然后显示出来。

建库、初始化、写sql语句,做前台界面。

估计大约需要1-3小时工作量。

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 16:34
eexpress
脚本去获取cal的输出就是。
awk取列。

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 16:37
ljj_jjl2008
如果写shell语句,思路估计差不多,我没有兴趣写了,
公元1年1月1日是星期几,哪些年份是润年,平年每个月多少天,润年每个月多少天写到变量和数组里面。
(sql语句)可以改成循环语句,把一年365天(或366天)是几月几号、星期几 循环计算一次,用判断语句碰到星期二的就用echo输出一次结果。

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 16:53
leeaman
这个python就蛮简单的 :em06

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 17:05
leeaman
jj叔叔的强项是sql看来是 :em06

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 17:08
月下叹逍遥
如果是C或者fortran,工作量不会太大。。。 :em06 :em06

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 17:08
月下叹逍遥
leeaman 写了:jj叔叔的强项是sql看来是 :em06
jj叔貌似不会python :em04

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 17:22
ljj_jjl2008
月下叹逍遥 写了:
leeaman 写了:jj叔叔的强项是sql看来是 :em06
jj叔貌似不会python :em04
都说对了。 :em03

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 18:27
liuenyan
试着写了一个从cal命令里提取星期二的。尝试用awk ‘{print $3}’获取列会出错,因为cal输出的月份前几天可能是空白,用cut获取的数据是对的。

代码: 全选

#!/bin/sh

Months="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"

for year;
do
    echo $year
    i=1
    for m in $Months;
    do 
        echo $m `cal $i $year | sed '1,2d' | cut -c7-8 | xargs echo`
        ((i++))
    done
done

exit 0

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-29 21:40
eexpress
ljj_jjl2008 写了:
月下叹逍遥 写了:
leeaman 写了:jj叔叔的强项是sql看来是 :em06
jj叔貌似不会python :em04
都说对了。 :em03
不对吧。他的强项不是lajj嘛。

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-11-30 18:16
MaskRay
[haskell]
import Data.Time.Calendar.WeekDate
import Data.Time.Calendar
import Data.List
main = mapM_ print $ nub $ map (flip (fromWeekDate 2011) 2) [1..53]
[/haskell]

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-12-01 6:12
fnan
ncal 2011|sed -nr 's/(^[^0-9]+$)|Tu(.*)/\1\2/p'

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-12-22 15:53
LeePrison
fnan 写了:ncal 2011|sed -nr 's/(^[^0-9]+$)|Tu(.*)/\1\2/p'

ncal 2011|grep -P '^\s.*|Tu.*'

Re: 如何打印任意年的每个星期二的日期

发表于 : 2011-12-22 21:54
fnan
LeePrison 写了:
fnan 写了:ncal 2011|sed -nr 's/(^[^0-9]+$)|Tu(.*)/\1\2/p'

ncal 2011|grep -P '^\s.*|Tu.*'
#perl正则太容易不好玩,通常不用。
这种效果嘛:
ncal 2011|sed -r '/^\s|^Tu/!d'