公历转农历的脚本,可用于conky

sh/bash/dash/ksh/zsh等Shell脚本
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 公历转农历的脚本,可用于conky

#16

帖子 tusooa » 2010-11-23 22:01

代码: 全选

tlcr: 0 庚寅年十月十八日 21:19 ~
● ds lc-农历.perl 
#!/usr/bin/env perl

use 5.010;

use Getopt::Long;
GetOptions(
    number => \$num,
);

%en2cn = (
    "1" => "一", "2" => "二", "3" => "三", "4" => "四", "5" => "五", "6" => "六", "7" => "七",
    "8"=>"八", "9"=>"九", "10"=>"十",
    "11"=>"十一", "12"=>"十二", "13"=>"十三", "14"=>"十四", "15"=>"十五", "16"=>"十六", "17"=>"十七", "18"=>"十八", "19"=>"十九", "20"=>"二十",
    "21"=>"廿一", "22"=>"廿二", "23"=>"廿三", "24"=>"廿四", "25"=>"廿五", "26"=>"廿六", "27"=>"廿七", "28"=>"廿八", "29"=>"廿九", "30"=>"三十",);

if (@ARGV == 3)
{
    $date = "$ARGV[0] $ARGV[1] $ARGV[2]";
}
else
{
    chomp ($date = `date "+%Y %m %d"`);
}
@_ = `lunar -h $date | enconv`;

for (@_)
{
    $line++;
    if($line==4){
        /(\d+)年\s*?(\d+)月\s*?(\d+)日/;
        ($nyear,$month,$day)=($1,$2,$3);
    }
    elsif($line==5){
        /^干支: (.+?)年/;
        $year=$1;
    }
}

if ($num)
{
    say "${nyear} ${month} ${day}";
}
else
{
    say "${year}年$en2cn{$month}月$en2cn{$day}日";
}

tlcr: 0 庚寅年十月十八日 21:56 ~ 
● 

代码: 全选

] ls -ld //
头像
好红狼
帖子: 2
注册时间: 2014-08-09 18:47
系统: 14.04, 13.04, 10.04

Re: 公历转农历的脚本,可用于conky

#17

帖子 好红狼 » 2014-08-09 19:36

谢谢c\nc
很好脚本! 我用它.
我在最后一行改变了代码:
parse_date -d "$*"

在.conkyrc我写的: ......${execpi 600 "脚本文件的路径"}.......
回复