老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

怎么用Shell腳本實(shí)現(xiàn)的陽(yáng)歷轉(zhuǎn)農(nóng)歷-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“怎么用Shell腳本實(shí)現(xiàn)的陽(yáng)歷轉(zhuǎn)農(nóng)歷”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)與策劃設(shè)計(jì),膠州網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:膠州等地區(qū)。膠州做網(wǎng)站價(jià)格咨詢(xún):028-86922220

1、緣由

本腳本實(shí)現(xiàn)原理是查表法(因?yàn)楣接姓`差);基于農(nóng)歷新年為基準(zhǔn),對(duì)農(nóng)歷新年前后兩個(gè)不同的農(nóng)歷進(jìn)行計(jì)算。

寫(xiě)這個(gè)腳本之前是想在Linux 終端命令提示符中加入陽(yáng)歷及農(nóng)歷日期。在Ubuntu中有Lunar軟件可以獲取農(nóng)歷日期,但在Fedora或CentOS中并沒(méi)有類(lèi)似軟件,所以就想自己來(lái)實(shí)現(xiàn)一個(gè),但網(wǎng)上用其他語(yǔ)言寫(xiě)的一大把,如果再寫(xiě)沒(méi)什么必要。所以就想用shell來(lái)寫(xiě)一個(gè)。

2、功能及使用

功能:將具體的陽(yáng)歷日期轉(zhuǎn)換為農(nóng)歷日期。

時(shí)間范圍:1901~2099,對(duì)應(yīng)農(nóng)歷年時(shí)間為4598~4796

參數(shù)格式(無(wú)參數(shù)默認(rèn)為當(dāng)前系統(tǒng)日期):yyyymmdd

如2013年1月1日:

代碼如下:


$./lunar.sh 20130101
4709-11-20


3、完整數(shù)據(jù)

完整數(shù)據(jù)下載鏈接:
/tupian/20230522/pplunar.sh 主腳本,具體實(shí)現(xiàn)

datebases 農(nóng)歷元數(shù)據(jù)

change.log 更改日志

readme 腳本說(shuō)明及注意事項(xiàng)

主要腳本lunar.sh代碼如下:

#!/bin/sh

DATE=$@
[ "$DATE" = "" ] && DATE=$(date +%Y%m%d)

databases_path=databases

date_year=$(echo $DATE |sed 's/^\(.\{4\}\).*/\1/')
date_month=$(echo $DATE |sed 's/.*\(..\)..$/\1/')
date_day=$(echo $DATE |sed 's/.*\(..\)$/\1/')
date_days=$(date -d $DATE +%j)

lunar_year=$(sed /$date_year/!d $databases_path |sed 's/^\(....\).*/\1/')

lunar_year_data=$(sed /$date_year/!d $databases_path |sed 's/.*\ \(.*\)/\1/')
lunar_year_data_bin=$(echo "ibase=16;obase=2;$lunar_year_data"|bc |sed -e :a -e 's/^.\{1,23\}$/0&/;ta')

new_year_month_bin=$(echo $lunar_year_data_bin |sed -e 's/^.\{17\}\(.\{2\}\).*/\1/')
new_year_month=$(echo "ibase=2;$new_year_month_bin"|bc |sed -e :a -e 's/^.\{1,1\}$/0&/;ta')

new_year_day_bin=$(echo $lunar_year_data_bin |sed -e 's/.*\(.\{5\}\)$/\1/')
new_year_day=$(echo "ibase=2;$new_year_day_bin"|bc |sed -e :a -e 's/^.\{1,1\}$/0&/;ta')

new_year_days=$(date -d $date_year$new_year_month$new_year_day +%j)
lunar_days=$(expr $date_days - $new_year_days + 1)

befor_or_after=0

if [ "$lunar_days" -le "0" ]; then
  befor_or_after=1
  date_year=$(($date_year - 1))

  lunar_year=$(sed /$date_year/!d $databases_path |sed 's/^\(....\).*/\1/')

  lunar_year_data=$(sed /$date_year/!d $databases_path |sed 's/.*\ \(.*\)/\1/')
  lunar_year_data_bin=$(echo "ibase=16;obase=2;$lunar_year_data"|bc |sed -e :a -e 's/^.\{1,23\}$/0&/;ta')
fi

lunar_leap_month_bin=$(echo $lunar_year_data_bin |sed -e 's/^\(.\{4\}\).*/\1/')
lunar_leap_month=$(echo "ibase=2;$lunar_leap_month_bin"|bc)

lunar_month_all_bin=$(echo $lunar_year_data_bin |sed -e 's/^.\{4\}\(.\{13\}\).*/\1/')
[ "$lunar_leap_month" = "0" ] && lunar_month_all_bin=$(echo $lunar_year_data_bin |sed -e 's/^.\{4\}\(.\{12\}\).*/\1/')
lunar_month_all=$(echo $lunar_month_all_bin |sed -e 's/0/29\ /g' |sed -e 's/1/30\ /g')

if [ "$befor_or_after" = "0" ];then
  lunar_month=1
  lunar_day=$lunar_days
  for i in $lunar_month_all
  do
   [ "$lunar_day" -gt "$i" ] && lunar_day=$(($lunar_day - $i)) && lunar_month=$(($lunar_month + 1))
   [ "$lunar_day" = "$i" ] && break
  done
else
  lunar_month=12
  lunar_day=$((-$lunar_days))
  lunar_month_all_bin=$(echo $lunar_month_all_bin |rev)
  lunar_month_all=$(echo $lunar_month_all_bin |sed -e 's/0/29\ /g' |sed -e 's/1/30\ /g')
  for i in $lunar_month_all
  do
   if [ "$lunar_day" -gt "$i" ]; then
     lunar_day=$(($lunar_day - $i))
     lunar_month=$(($lunar_month - 1))
   else
     lunar_day=$(($i - $lunar_day))
     break
   fi
  done
fi

if [ "$lunar_leap_month" = "0" ]; then
  echo $lunar_year-$lunar_month-$lunar_day
else
  if [ "$lunar_leap_month" -ge "$lunar_month" ]; then
   echo $lunar_year-$lunar_month-$lunar_day
  elif [ "$befor_or_after" = "0" ]; then
   if [ "$(($lunar_leap_month + 1))" = "$lunar_month" ];then
     lunar_month=$(($lunar_month - 1))
     echo $lunar_year-*$lunar_month-$lunar_day
   else
     lunar_month=$(($lunar_month - 1))
     echo $lunar_year-$lunar_month-$lunar_day
   fi
  else
   echo $lunar_year-$lunar_month-$lunar_day
  fi
fi

lunar.sh

4 修改歷史

2013-12-02

發(fā)現(xiàn)bug:如果農(nóng)歷上個(gè)月是大月,本月為小月,則上個(gè)月的三十輸出為本月的初一,原因是上個(gè)月剩下30天,這正好是上個(gè)月的三十,而本月是29天,29<30,下一次循環(huán)的時(shí)候又減本月的天數(shù),使得上個(gè)月的三十成為本月的初一

bug修改:添加判斷語(yǔ)句,如果農(nóng)歷剩余天數(shù)等于當(dāng)月的天數(shù)則不再循環(huán)

“怎么用Shell腳本實(shí)現(xiàn)的陽(yáng)歷轉(zhuǎn)農(nóng)歷”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


本文名稱(chēng):怎么用Shell腳本實(shí)現(xiàn)的陽(yáng)歷轉(zhuǎn)農(nóng)歷-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.xueling.net.cn/article/dhjhpc.html

其他資訊

在線咨詢(xún)
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 视频一区二区三区在线 | 欧美日韩国产激情一区 | 成人精品毛片国产亚洲av十九禁 | 中文字日产乱码六区中国有限公司 | 亚洲欧美国产成人 | 深夜福利123红桃视频 | 欧美中文在线观看 | 伊人国产在线观看 | 婷婷丁香色综合狠狠色 | 欧美国产激情一区二区三区蜜月 | 性欧美1819sex性高播放 | 一级黄色片免费播放 | 江苏富婆按摩高潮对白 | 中文字幕第1页第69 日本成人中文字幕在线观看 | 人人曰人人做人人 | 无码一区二区三区爆白浆 | 131MM少妇做爰视频 | 一区二区美女视频 | 澳门成免费crm大全 狠狠躁夜夜躁av蜜臀少妇 | 久久精品一级毛片 | 国产乱子伦精品免费女 | 黄色在线观看免费视频 | 性少妇tubevⅰdeos高清 | 国产伊人久 | 大地影视中文第二页的背景故事 | 亚洲一级在线看 | 亚洲a成人午夜天堂 | 91在线精品播放 | 国产高清av在线一区二区三区 | 又大又粗又长的高潮视频 | 亚洲精品国产乱码久久久1区 | 国产精品一级毛片无码老人 | 人妻熟女一区二区AV | 2021国产精品久久精品 | 一二三四五在线视频 | 国产精品久久久久久久久鸭 | 色欲午夜无码久久久久久 | 永久免费无码网站在线观看 | 香蕉欧美成人精品A∨在线观看 | 国内精拍拍在线视频免费看 | 亚洲精品成人AA片在线播 |