分页: 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就蛮简单的

Re: 如何打印任意年的每个星期二的日期
发表于 : 2011-11-29 17:05
由 leeaman
jj叔叔的强项是sql看来是

Re: 如何打印任意年的每个星期二的日期
发表于 : 2011-11-29 17:08
由 月下叹逍遥
如果是C或者fortran,工作量不会太大。。。

Re: 如何打印任意年的每个星期二的日期
发表于 : 2011-11-29 17:08
由 月下叹逍遥
leeaman 写了:jj叔叔的强项是sql看来是

jj叔貌似不会python

Re: 如何打印任意年的每个星期二的日期
发表于 : 2011-11-29 17:22
由 ljj_jjl2008
月下叹逍遥 写了:leeaman 写了:jj叔叔的强项是sql看来是

jj叔貌似不会python

都说对了。

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看来是

jj叔貌似不会python

都说对了。

不对吧。他的强项不是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'