您所在的位置:十二生肖>十二星座>运程

获取农历的api 获取农历日期

时间:2023-10-28 06:44:59 浏览量:

一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于获取农历的api 获取农历日期的文章,本文对文章获取农历的api 获取农历日期好好的分析和解答,希望你能喜欢,只有你喜欢的内容存在,只有你来光临,我们才能继续前行。

获取农历的api 获取农历日期

C# 中 怎样获得当前星期以及农历时间

这是网上的例子,你仔细看看

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System;

using System.Collections.Generic;

using System.Text;

using System.Globalization;

/// <summary>

/// chinaDate 的摘要说明

/// </summary>

public class chinaDate

{

public string cDate()

{

ChineseLunisolarCalendar l = new ChineseLunisolarCalendar();

DateTime dt = DateTime.Today; //转换当日的日期

//dt = new DateTime(2023, 1,29);//农历2023年大年初一(测试用),也可指定日期转换

string[] aMonth ={"","银简正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "腊月", "腊月" };

//a10表示日期的十位!

string[] a10 ={ "初", "十", "廿", "卅" };

string[] aDigi ={ "O", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

string sYear = "", sYearArab = "", sMonth = "", sDay = "", sDay10 = "", sDay1 = "", sLuniSolarDate = "";

int iYear, iMonth, iDay;

iYear = l.GetYear(dt);

iMonth = l.GetMonth(dt);

iDay = l.GetDayOfMonth(dt);

//Format Year

sYearArab = iYear.ToString();

for (int i = 0; i < sYearArab.Length; i++)

{

sYear += aDigi[Convert.ToInt16(sYearArab.Substring(i, 1))];

}

//Format Month

int iLeapMonth = l.GetLeapMonth(iYear); //获取闰月

if (iLeapMonth > 0 && iMonth<=iLeapMonth)

{

//for (int i = iLeapMonth + 1; i < 13; i++) aMonth[i] = aMonth[i - 1];

aMonth[iLeapMonth] = "闰" + aMonth[iLeapMonth-1];

sMonth = aMonth[l.GetMonth(dt)];

}

else if (iLeapMonth > 0 && iMonth > iLeapMonth)

{

sMonth = aMonth[l.GetMonth(dt) - 1];

}

else

{

sMonth = aMonth[l.GetMonth(dt)];

}

返搏简//Format Day

sDay10 = a10[iDay / 10];

sDay1 = aDigi[(iDay % 10)];

sDay = sDay10 + sDay1;

if (iDay == 10) sDay = "初十";

if (iDay == 20) sDay = "二十";

if (iDay == 30) sDay = "三十";

//Format Lunar Date

//sLuniSolarDate = dt.Year+"年"+dt.Month+"月"+dt.Day+"日 "+Weeks(dt.DayOfWeek.ToString())+"漏裤 农历" + sYear + "年" + sMonth + sDay;

sLuniSolarDate =" 农历" + sMonth + sDay;

return sLuniSolarDate;

}

private string Weeks(string Weeken)

{

switch (Weeken)

{

case "Monday":

return "星期一";

break;

case "Tuesday":

return "星期二";

break;

case "Wednesday":

return "星期三";

break;

case "Thursday":

return "星期四";

break;

case "Friday":

return "星期五";

break;

case "Saturday":

return "星期六";

break;

case "Sunday":

return "星期日";

break;

default:

return " ";

}

}

}

二、第二步

chinaDate s = new chinaDate();

Label1.Text = DateTime.Now.ToShortDateString() + " " + CaculateWeekDay(DateTime.Now.DayOfWeek.ToString()) + " " + s.cDate();

三、第三步

#region 得到今天是星期几

protected string CaculateWeekDay(string week)

{

string weekstr = "";

switch (week)

{

case "Monday": weekstr = "星期一"; break;

case "Tuesday": weekstr = "星期二"; break;

case "Wednesday": weekstr = "星期三"; break;

case "Thursday": weekstr = "星期四"; break;

case "Friday": weekstr = "星期五"; break;

case "Saturday": weekstr = "星期六"; break;

case "Sunday": weekstr = "星期日"; break;

}

return weekstr;

}

使用java开源工具httpclient怎么使用

使用java开源工具httpClient及jsoup抓取解析网页数据

来源:iteye,原文

公历时间:2023年04月11日星期一

农历时间:猴年三月初五

天干地支:丙申年壬辰月癸亥日

宜:求子祈福开光祭祀安床

忌:玉堂(黄道)危日,忌出行

主要包括公历/农历日期,以及忌宜信息的等。但是手里并没有现成的数据可供使用,怎么办呢?革命前辈曾经说过,没有枪,没有炮,敌(wang)人(luo)给我们造!网络上有很多现成的在线万年历应用可供使用,虽然没有现成接口,但是我们可以伸出手来,自己去拿。也就是所谓的数据抓取。

HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰派樱富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如ApacheJakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用尘桥丛了HttpClient。

1.创建HttpClient对象。

2.创建请求方法的消扒实例,并指定请求URL。

3.调用HttpClient对象的execute(HttpUriRequestrequest)发送请求,该方法返回一个HttpResponse。

4.调用HttpResponse相关方法获取相应内容。

5.释放连接。

jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

需要更多信息可以参见官网下载地址

httpClient:http://hc.apache.org/httpcomponents-client-5.0.x/index.html

jsoup:http://jsoup.org/

接下来我们直接上代码,这里我们抓取2345在线万年历的数据http://tools.2345.com/rili.htm

首先我们定义一个实体类Almanac来存储黄历数据

Almanac.java1packagecom.likx.picker.util.bean;2

3/**4

*万年历工具实体类5

*

6

*@author溯源blog7

*2023年4月11日8

*/9publicclassAlmanac{10

privateStringsolar;

/*阳历e.g.2023年4月11日星期一*/11

privateStringlunar;

/*阴历e.g.猴年三月初五*/12

privateStringchineseAra;

/*天干地支纪年法e.g.丙申年壬辰月癸亥日*/13

privateStringshould;

/*宜e.g.求子祈福开光祭祀安床*/14

privateStringavoid;

/*忌e.g.玉堂(黄道)危日,忌出行*/1516

publicStringgetSolar(){17

returnsolar;18

}1920

publicvoidsetSolar(Stringdate){21

this.solar=date;22

}2324

publicStringgetLunar(){25

returnlunar;26

}2728

publicvoidsetLunar(Stringlunar){29

this.lunar=lunar;30

}3132

publicStringgetChineseAra(){33

returnchineseAra;34

}3536

publicvoidsetChineseAra(StringchineseAra){37

this.chineseAra=chineseAra;38

}3940

publicStringgetAvoid(){41

returnavoid;42

}4344

publicvoidsetAvoid(Stringavoid){45

this.avoid=avoid;46

}4748

publicStringgetShould(){49

returnshould;50

}5152

publicvoidsetShould(Stringshould){53

this.should=should;54

}5556

publicAlmanac(Stringsolar,Stringlunar,StringchineseAra,Stringshould,57

Stringavoid){58

this.solar=solar;59

this.lunar=lunar;60

this.chineseAra=chineseAra;61

this.should=should;62

this.avoid=avoid;63

}64}

然后是抓取解析的主程序,写程序之前需要在官网下载需要的jar包

AlmanacUtil.javapackagecom.likx.picker.util;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importorg.apache.http.HttpEntity;importorg.apache.http.ParseException;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.util.EntityUtils;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;/***<STRONG>类描述</STRONG>:

2345万年历信息爬取工具<p>*

*@version1.0<p>*@author溯源blog*

*<STRONG>创建时间</STRONG>:2023年4月11日下午14:15:44<p>*<STRONG>修改历史</STRONG>:<p>*<pre>*修改人

修改时间

修改内容*---------------

-------------------

-----------------------------------*</pre>*/publicclassAlmanacUtil{

/**

*单例工具类

*/

privateAlmanacUtil(){

}

/**

*获取万年历信息

*@return

*/

publicstaticAlmanacgetAlmanac(){

Stringurl="http://tools.2345.com/rili.htm";

Stringhtml=pickData(url);

Almanacalmanac=analyzeHTMLByString(html);

returnalmanac;

}

/*

*爬取网页信息

*/

privatestaticStringpickData(Stringurl){

CloseableHttpClienthttpclient=HttpClients.createDefault();

try{

HttpGethttpget=newHttpGet(url);

CloseableHttpResponseresponse=httpclient.execute(httpget);

try{

//获取响应实体

HttpEntityentity=response.getEntity();

//打印响应状态

if(entity!=null){

returnEntityUtils.toString(entity);

}

}finally{

response.close();

}

}catch(ClientProtocolExceptione){

e.printStackTrace();

}catch(ParseExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}finally{

//关闭连接,释放资源

try{

httpclient.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

returnnull;

}

/*

*使用jsoup解析网页信息

*/

privatestaticAlmanacanalyzeHTMLByString(Stringhtml){

StringsolarDate,lunarDate,chineseAra,should,avoid="";

Documentdocument=Jsoup.parse(html);

//公历时间

solarDate=getSolarDate();

//农历时间

ElementeLunarDate=document.getElementById("info_nong");

lunarDate=eLunarDate.child(0).html().substring(1,3)+eLunarDate.html().substring(11);

//天干地支纪年法

chineseAra=eChineseAra.text().toString();

//宜

should=getSuggestion(document,"yi");

//忌

avoid=getSuggestion(document,"ji");

Almanacalmanac=newAlmanac(solarDate,lunarDate,chineseAra,should,avoid);

returnalmanac;

}

/*

*获取忌/宜

*/

privatestaticStringgetSuggestion(Documentdoc,Stringid){

Elementelement=doc.getElementById(id);

Elementselements=element.getElementsByTag("a");

StringBuffersb=newStringBuffer();

for(Elemente:elements){

sb.append(e.text()+"");

}

returnsb.toString();

}

/*

*获取公历时间,用yyyy年MM月dd日EEEE格式表示。

*@returnyyyy年MM月dd日EEEE

*/

privatestaticStringgetSolarDate(){

Calendarcalendar=Calendar.getInstance();

DatesolarDate=calendar.getTime();

SimpleDateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日EEEE");

returnformatter.format(solarDate);

}}

为了简单明了我把抓取解析抽象成了几个独立的方法,

然后下面是一个测试类简单测试下效果:AlmanacUtilTest.javapackagecom.likx.picker.util.test;publicclassAlmanacUtilTest{

publicstaticvoidmain(Stringargs[]){

Almanacalmanac=AlmanacUtil.getAlmanac();

System.out.println("公历时间:"+almanac.getSolar());

System.out.println("农历时间:"+almanac.getLunar());

System.out.println("天干地支:"+almanac.getChineseAra());

System.out.println("宜:"+almanac.getShould());

System.out.println("忌:"+almanac.getAvoid());

}}

集成到实际项目中效果是这样的:

另外最近博客一直没怎么更新,因为最近考虑到技术氛围的原因,离开了对日外包行业,前往一家互联网公司就职。说一下最近的感受,那就是一个程序员最核心的竞争力不是学会了多少框架,掌握多少种工具(当然这些对于程序员也不可或缺),而是扎实的基础以及快速学习的能力,比如今天这个项目,从对httpClient,jsoup工具一无所知到编写出Demo代码总计大概1个多小时,在之前对于我来说是不可想象的,在技术氛围浓厚的地方快速get技能的感觉,非常好。

当然本例只是一个非常浅显的小例子,网页上内容也很容易抓取,httpClient及jsoup工具更多强大的地方没有体现到,比如httpClient不仅可以发送get请求,而且可以发送post请求,提交表单,传送文件,还比如jsoup最强大的地方在于它支持仿jquery的选择器。本例仅仅使用了最简单的document.getElementById()匹配元素,实际上jsoup的选择器异常强大,可以说它就是java版的jquery,比如这样:Elementslinks=doc.select("a[href]");//awithhrefElementspngs=doc.select("img[src$=.jpg]");

//imgwithsrcending.jpgElementmasthead=doc.select("div.masthead").first();

//divwithclass=mastheadElementsresultLinks=doc.select("h3.r>a");//directaafterh3

以上内容是小编精心整理的关于获取农历的api 获取农历日期的精彩内容,好的文章需要你的分享,喜欢获取农历的api 获取农历日期这篇精彩文章的,请您经常光顾吧!

本文标题:获取农历的api 获取农历日期

本文链接:http://www.shengxiao88.com/article/165663.html

上一篇:八月份农历有三十吗 八月份农历是什么星座

下一篇:更多运程

网友留言

(网友评论仅供其表达个人看法,并不表明本站立场)

猜你喜欢
运程相关文章
更多运程文章
喜欢运程就经常来哦!