Java获取当地的日出日落时间代码分享
根据经纬度和当前日期获取当地的日出日落时间,强大的Google搜索让我迅速找到了一个外国人写的一个java类,代码中的注释写得很清楚。
这里直接贴出代码来:
/******************************************************************************
*
* SunriseSunset.java
*
*******************************************************************************
*
*JavaClass:SunriseSunset
*
* ThisJavaclassispartofacollectionofclassesdevelopedforthe
* readingandprocessingofoceanographicandmeterologicaldatacollected
* since1970byenvironmentalbuoysandstations. Thisdatasetis
* maintainedbytheNationalOceanographicDataCenterandispublicly
* available. TheseJavaclasseswerewrittenfortheUSEnvironmental
* ProtectionAgency"sNationalExposureResearchLaboratoryunderContract
* No.GS-10F-0073KwithNeptuneandCompanyofLosAlamos,NewMexico.
*
*Purpose:
*
* ThisJavaclassperformscalculationstodeterminethetimeof
* sunriseandsunsetgivenlat,long,anddate.
*
*Inputs:
*
* Latitude,longitude,date/time,andtimezone.
*
*Outputs:
*
* Localtimeofsunriseandsunsetascalculatedbythe
* program.
* Ifnosunriseornosunsetoccurs,orifthesunisupallday
* ordownallday,appropriatebooleanvaluesareset.
* Abooleanisprovidedtoidentifyifthetimeprovidedisduringtheday.
*
* Theabovevaluesareaccessedbythefollowingmethods:
*
* Date getSunrise() returnsdate/timeofsunrise
* Date getSunset() returnsdate/timeofsunset
* boolean isSunrise() returnstrueiftherewasasunrise,elsefalse
* boolean isSunset() returnstrueiftherewasasunset,elsefalse
* boolean isSunUp() returnstrueifsunisupallday,elsefalse
* boolean isSunDown() returnstrueifsunisdownallday,elsefalse
* boolean isDaytime() returnstrueifsunisupatthetime
* specified,elsefalse
*
*RequiredclassesfromtheJavalibrary:
*
* java.util.Date
* java.text.SimpleDateFormat
* java.text.ParseException;
* java.math.BigDecimal;
*
*Packageofwhichthisclassisamember:
*
* default
*
*Knownlimitations:
*
* Itisassumedthatthedataprovidedarewithinvalieranges
* (i.e.latitudebetween-90and+90,longitudebetween0and360,
* avaliddate,andtimezonebetween-14and+14.
*
*Compatibility:
*
* Java1.1.8
*
*References:
*
* Themathematicalalgorithmsusedinthisprogramarepatterned
* afterthosedebvelopedbyRogerSinnottinhisBASICprogram,
* SUNUP.BAS,publishedinSky&Telescopemagazine:
* Sinnott,RogerW."SunriseandSunset:AChallenge"
* Sky&Telescope,August,1994p.84-85
*
* Thefollowingisacross-indexofvariablesusedinSUNUP.BAS.
* Asingledefinitionfrommultiplereuseofvariablenamesin
* SUNUP.BASwasclarifiedwithvariousdefinitionsinthisprogram.
*
* SUNUP.BAS thisclass
*
* A dfA
* A(2) dfAA1,dfAA2
* A0 dfA0
* A2 dfA2
* A5 dfA5
* AZ Notused
* C dfCosLat
* C0 dfC0
* D iDay
* D(2) dfDD1,dfDD2
* D0 dfD0
* D1 dfD1
* D2 dfD2
* D5 dfD5
* D7 Notused
* DA dfDA
* DD dfDD
* G bGregorian,dfGG
* H dfTimeZone
* H0 dfH0
* H1 dfH1
* H2 dfH2
* H3 dfHourRise,dfHourSet
* H7 Notused
* J dfJ
* J3 dfJ3
* K1 dfK1
* L dfLL
* L0 dfL0
* L2 dfL2
* L5 dfLon
* M iMonth
* M3 dfMinRise,dfMinSet
* N7 Notused
* P dfP
* S iSign,dfSinLat,dfSS
* T dfT
* T0 dfT0
* T3 notused
* TT dfTT
* U dfUU
* V dfVV
* V0 dfV0
* V1 dfV1
* V2 dfV2
* W dfWW
* Y iYear
* Z dfZenith
* Z0 dfTimeZone
*
*
*Author/Company:
*
* JDT:JohnTauxe,NeptuneandCompany
* JMG:JoMarieGreen
*
*Changelog:
*
* date ver by descriptionofchange
* _________ _____ ___ ______________________________________________
* 5Jan01 0.006 JDT Excisedfromssapp.javav.0.005.
* 11Jan01 0.007 JDT Minormodificationstocommentsbasedon
* materialfromSinnott,1994.
* 7Feb01 0.008 JDT Fixedbackwardstimezone. Thestandardisthat
* localtimezoneisspecifiedinhoursEASTof
* Greenwich,sothatESTwouldbe-5,forexample.
* Forsomereason,SUNUP.BASdoesthisbackwards
* (probablyanamericocentricperspective)and
* SunriseSunsetadoptedthatconvention. Oops.
* Sothesigninthemathischanged.
* 7Feb01 0.009 JDT Well,thatthrewofftheazimuthcalculation...
* Removedtheazimuthcalculations.
* 14Feb01 0.010 JDT Addedabilitytoacceptatime(HH:mm)in
* dateInput,anddecideifthattimeisdaytime
* ornighttime.
* 27Feb01 0.011 JDT Addedaccessormethodsinplaceofhavingpublic
* variablestogetresults.
* 28Feb01 0.012 JDT Cleaneduplistofimportedclasses.
* 28Mar01 1.10 JDT Finalversionaccompanyingdeliverable1b.
* 4Apr01 1.11 JDT Movedlogicsupporting.isDaytimeintomethod.
* Movedcalculationsoutofconstructor.
* 01May01 1.12 JMG Added"GMT"designationandtestinglines.
* 16May01 1.13 JDT AddedsetLenient(false)andsetTimeZone(tz)
* todfmtDay,dfmtMonth,anddfmtYearin
* doCalculations.
* 27Jun01 1.14 JDT RemovedrelianceonStationConstants(GMT).
* 13Aug01 1.20 JDT Finalversionaccompanyingdeliverable1c.
* 6Sep01 1.21 JDT Thoroughcodeandcommentreview.
* 21Sep01 1.30 JDT Finalversionaccompanyingdeliverable2.
* 17Dec01 1.40 JDT Versionaccompanyingfinaldeliverable.
*
*----------------------------------------------------------------------------*/
//Importrequiredclassesandpackages
importjava.util.Date;
importjava.text.SimpleDateFormat;
importjava.text.ParseException;
importjava.math.BigDecimal;
importjava.util.TimeZone;
/******************************************************************************
* class: SunriseSunsetclass
*******************************************************************************
*
* ThisJavaclassperformscalculationstodeterminethetimeof
* sunriseandsunsetgivenlat,long,anddate.
*
* Itisassumedthatthedataprovidedarewithinvalieranges
* (i.e.latitudebetween-90and+90,longitudebetween0and360,
* avaliddate,andtimezonebetween-14and+14.
*
*----------------------------------------------------------------------------*/
publicclassSunriseSunset
{
//Declareandinitializevariables
privatedouble dfLat; //latitudefromuser
privatedouble dfLon; //latitudefromuser
privateDate dateInput; //date/timefromuser
privatedouble dfTimeZone; //timezonefromuser
privateDate dateSunrise; //dateandtimeofsunrise
privateDate dateSunset; //dateandtimeofsunset
privateboolean bSunriseToday =false; //flagforsunriseonthisdate
privateboolean bSunsetToday =false; //flagforsunsetonthisdate
privateboolean bSunUpAllDay =false; //flagforsunupallday
privateboolean bSunDownAllDay=false; //flagforsundownallday
privateboolean bDaytime =false; //flagfordaytime,given
//hourandminindateInput
privateboolean bSunrise=false; //sunriseduringhourchecked
privateboolean bSunset =false; //sunsetduringhourchecked
privateboolean bGregorian=false; //flagforGregoriancalendar
privateint iJulian; //Julianday
private int iYear; //yearofdateofinterest
private int iMonth; //monthofdateofinterest
private int iDay; //dayofdateofinterest
private int iCount; //asimplecounter
private int iSign; //SUNUP.BAS:S
privatedouble dfHourRise,dfHourSet; //hourofevent:SUNUP.BASH3
privatedouble dfMinRise,dfMinSet; //minuteofevent:SUNUP.BASM3
private double dfSinLat,dfCosLat; //sinandcosoflatitude
private double dfZenith; //SUNUP.BASZ:Zenith
private SimpleDateFormatdfmtDate; //formattingfordatealone
private SimpleDateFormatdfmtDateTime; //formattingfordateandtime
private SimpleDateFormatdfmtYear; //formattingforyear
private SimpleDateFormatdfmtMonth; //formattingformonth
private SimpleDateFormatdfmtDay; //formattingforday
//ManyvariablesinSUNUP.BAShaveundocumentedmeanings,
//andsoaretranslatedratherdirectlytoavoidconfusion:
private double dfAA1=0,dfAA2=0; //SUNUP.BASA(2)
private double dfDD1=0,dfDD2=0; //SUNUP.BASD(2)
private double dfC0; //SUNUP.BASC0
private double dfK1; //SUNUP.BASK1
private double dfP; //SUNUP.BASP
private double dfJ; //SUNUP.BASJ
private double dfJ3; //SUNUP.BASJ3
private double dfA; //SUNUP.BASA
private double dfA0,dfA2,dfA5; //SUNUP.BASA0,A2,A5
private double dfD0,dfD1,dfD2,dfD5; //SUNUP.BASD0,D1,D2,D5
private double dfDA,dfDD; //SUNUP.BASDA,DD
private double dfH0,dfH1,dfH2; //SUNUP.BASH0,H1,H2
private double dfL0,dfL2; //SUNUP.BASL0,L2
private double dfT,dfT0,dfTT; //SUNUP.BAST,T0,TT
private double dfV0,dfV1,dfV2; //SUNUP.BASV0,V1,V2
privateTimeZonetz=TimeZone.getTimeZone("GMT");
/******************************************************************************
* method: SunriseSunset
*******************************************************************************
*
* ConstructorforSunriseSunsetclass.
*
*----------------------------------------------------------------------------*/
SunriseSunset(
doubledfLatIn, //latitude
doubledfLonIn, //longitude
Date dateInputIn, //date
doubledfTimeZoneIn //timezone
)
{
//Copyvaluessuppliedasagrumentstolocalvariables.
dfLat =dfLatIn;
dfLon =dfLonIn;
dateInput =dateInputIn;
dfTimeZone =dfTimeZoneIn;
//Callthemethodtodothecalculations.
doCalculations();
}//endofclassconstructor
/******************************************************************************
* method: doCalculations
*******************************************************************************
*
* MethodforperformingthecalculationsdoneinSUNUP.BAS.
*
*----------------------------------------------------------------------------*/
privatevoiddoCalculations()
{
try
{
//Breakoutday,month,andyearfromdateprovided.
//(Thisisnecesaryforthemathalgorithms.)
dfmtYear =newSimpleDateFormat("yyyy");
dfmtYear.setLenient(false);
dfmtYear.setTimeZone(tz);
dfmtMonth=newSimpleDateFormat("M");
dfmtMonth.setLenient(false);
dfmtMonth.setTimeZone(tz);
dfmtDay =newSimpleDateFormat("d");
dfmtDay.setLenient(false);
dfmtDay.setTimeZone(tz);
iYear =Integer.parseInt( dfmtYear.format(dateInput));
iMonth=Integer.parseInt(dfmtMonth.format(dateInput));
iDay =Integer.parseInt( dfmtDay.format(dateInput));
//Converttimezonehourstodecimaldays(SUNUP.BASline50)
dfTimeZone=dfTimeZone/24.0;
//NOTE:(7Feb2001)Hereisanon-standardpartofSUNUP.BAS:
//It(andthisalgorithm)assumesthatthetimezoneis
//positivewest,insteadofthestandardnegativewest.
//ClassescallingSunriseSunsetwillbeassumingthat
//timeszonesarespecifiedinnegativewest,soherethe
//signischangedsothattheSUNUPalgorithmworks:
dfTimeZone=-dfTimeZone;
//Convertlongitudetofraction(SUNUP.BASline50)
dfLon=dfLon/360.0;
//ConvertcalendardatetoJuliandate:
//Checktoseeifit"slaterthan1583:Gregoriancalendar
//Whendeclared,bGregorianisinitializedtofalse.
//**Considermakingaseparateclassofthisfunction.**
if(iYear>=1583)bGregorian=true;
//SUNUP.BAS1210
dfJ=-Math.floor(7.0 //SUNUPusedINT,notfloor
*(Math.floor(
(iMonth+9.0)
/12.0
)+iYear
)/4.0
)
//addSUNUP.BAS1240and1250forG=0
+Math.floor(iMonth*275.0/9.0)
+iDay
+1721027.0
+iYear*367.0;
if(bGregorian)
{
//SUNUP.BAS1230
if((iMonth-9.0)<0.0)iSign=-1;
elseiSign=1;
dfA=Math.abs(iMonth-9.0);
//SUNUP.BAS1240and1250
dfJ3=-Math.floor(
(
Math.floor(
Math.floor(iYear
+(double)iSign
*Math.floor(dfA/7.0)
)
/100.0
)+1.0
)*0.75
);
//correctdfJasinSUNUP.BAS1240and1250forG=1
dfJ=dfJ+dfJ3+2.0;
}
//SUNUP.BAS1290
iJulian=(int)dfJ-1;
//SUNUP.BAS60and70(seealsoline1290)
dfT=(double)iJulian-2451545.0+0.5;
dfTT=dfT/36525.0+1.0; //centuriessince1900
//Calculatelocalsiderealtimeat0hinzonetime
//SUNUP.BAS410through460
dfT0=(dfT*8640184.813/36525.0
+24110.5
+dfTimeZone*86636.6
+dfLon*86400.0
)
/86400.0;
dfT0=dfT0-Math.floor(dfT0); //NOTE:SUNUP.BASusesINT()
dfT0=dfT0*2.0*Math.PI;
//SUNUP.BAS90
dfT=dfT+dfTimeZone;
//SUNUP.BAS110:GetSun"sposition
for(iCount=0;iCount<=1;iCount++) //Loopthruonlytwice
{
//CalculateSun"srightascensionanddeclination
// atthestartandendofeachday.
//SUNUP.BAS910-1160:Fundamentalarguments
// fromvanFlandernandPulkkinen,1979
//declarelocaltemporarydoublesforcalculations
double dfGG; //SUNUP.BASG
double dfLL; //SUNUP.BASL
double dfSS; //SUNUP.BASS
double dfUU; //SUNUP.BASU
double dfVV; //SUNUP.BASV
double dfWW; //SUNUP.BASW
dfLL=0.779072+0.00273790931*dfT;
dfLL=dfLL-Math.floor(dfLL);
dfLL=dfLL*2.0*Math.PI;
dfGG=0.993126+0.0027377785*dfT;
dfGG=dfGG-Math.floor(dfGG);
dfGG=dfGG*2.0*Math.PI;
dfVV= 0.39785*Math.sin(dfLL)
-0.01000*Math.sin(dfLL-dfGG)
+0.00333*Math.sin(dfLL+dfGG)
-0.00021*Math.sin(dfLL)*dfTT;
dfUU=1
-0.03349*Math.cos(dfGG)
-0.00014*Math.cos(dfLL*2.0)
+0.00008*Math.cos(dfLL);
dfWW=-0.00010
-0.04129*Math.sin(dfLL*2.0)
+0.03211*Math.sin(dfGG)
-0.00104*Math.sin(2.0*dfLL-dfGG)
-0.00035*Math.sin(2.0*dfLL+dfGG)
-0.00008*Math.sin(dfGG)*dfTT;
//ComputeSun"sRAandDec;SUNUP.BAS1120-1140
dfSS=dfWW/Math.sqrt(dfUU-dfVV*dfVV);
dfA5=dfLL
+Math.atan(dfSS/Math.sqrt(1.0-dfSS*dfSS));
dfSS=dfVV/Math.sqrt(dfUU);
dfD5=Math.atan(dfSS/Math.sqrt(1-dfSS*dfSS));
//Setvaluesandincrementt
if(iCount==0) //SUNUP.BAS125
{
dfAA1=dfA5;
dfDD1=dfD5;
}
else //SUNUP.BAS145
{
dfAA2=dfA5;
dfDD2=dfD5;
}
dfT=dfT+1.0; //SUNUP.BAS130
} //endofGetSun"sPositionforloop
if(dfAA2<dfAA1)dfAA2=dfAA2+2.0*Math.PI;
//SUNUP.BAS150
dfZenith=Math.PI*90.833/180.0; //SUNUP.BAS160
dfSinLat=Math.sin(dfLat*Math.PI/180.0); //SUNUP.BAS170
dfCosLat=Math.cos(dfLat*Math.PI/180.0); //SUNUP.BAS170
dfA0=dfAA1; //SUNUP.BAS190
dfD0=dfDD1; //SUNUP.BAS190
dfDA=dfAA2-dfAA1; //SUNUP.BAS200
dfDD=dfDD2-dfDD1; //SUNUP.BAS200
dfK1=15.0*1.0027379*Math.PI/180.0; //SUNUP.BAS330
//Initializesunriseandsunsettimes,andothervariables
//hrandminaresettoimpossibletimestomakeerrorsobvious
dfHourRise=99.0;
dfMinRise =99.0;
dfHourSet =99.0;
dfMinSet =99.0;
dfV0=0.0; //initializationimpliedbyabsenceinSUNUP.BAS
dfV2=0.0; //initializationimpliedbyabsenceinSUNUP.BAS
//TesteachhourtoseeiftheSuncrossesthehorizon
// andwhichwayitisheading.
for(iCount=0;iCount<24;iCount++) //SUNUP.BAS210
{
double tempA; //SUNUP.BASA
double tempB; //SUNUP.BASB
double tempD; //SUNUP.BASD
double tempE; //SUNUP.BASE
dfC0=(double)iCount;
dfP=(dfC0+1.0)/24.0; //SUNUP.BAS220
dfA2=dfAA1+dfP*dfDA; //SUNUP.BAS230
dfD2=dfDD1+dfP*dfDD; //SUNUP.BAS230
dfL0=dfT0+dfC0*dfK1; //SUNUP.BAS500
dfL2=dfL0+dfK1; //SUNUP.BAS500
dfH0=dfL0-dfA0; //SUNUP.BAS510
dfH2=dfL2-dfA2; //SUNUP.BAS510
//hourangleathalfhour
dfH1=(dfH2+dfH0)/2.0; //SUNUP.BAS520
//declinationathalfhour
dfD1=(dfD2+dfD0)/2.0; //SUNUP.BAS530
//SetvalueofdfV0onlyifthisisthefirsthour,
//otherwise,itwillgetsettothelastdfV2(SUNUP.BAS250)
if(iCount==0) //SUNUP.BAS550
{
dfV0=dfSinLat*Math.sin(dfD0)
+dfCosLat*Math.cos(dfD0)*Math.cos(dfH0)
-Math.cos(dfZenith); //SUNUP.BAS560
}
else
dfV0=dfV2; //Thatis,dfV2fromtheprevioushour.
dfV2=dfSinLat*Math.sin(dfD2)
+dfCosLat*Math.cos(dfD2)*Math.cos(dfH2)
-Math.cos(dfZenith); //SUNUP.BAS570
//ifdfV0anddfV2havethesamesign,thenproceedtonexthr
if(
(dfV0>=0.0&&dfV2>=0.0) //botharepositive
|| //or
(dfV0<0.0&&dfV2<0.0) //botharenegative
)
{
//Breakiterationandproceedtotestnexthour
dfA0=dfA2; //SUNUP.BAS250
dfD0=dfD2; //SUNUP.BAS250
continue; //SUNUP.BAS610
}
dfV1=dfSinLat*Math.sin(dfD1)
+dfCosLat*Math.cos(dfD1)*Math.cos(dfH1)
-Math.cos(dfZenith); //SUNUP.BAS590
tempA=2.0*dfV2-4.0*dfV1+2.0*dfV0;
//SUNUP.BAS600
tempB=4.0*dfV1-3.0*dfV0-dfV2; //SUNUP.BAS600
tempD=tempB*tempB-4.0*tempA*dfV0; //SUNUP.BAS610
if(tempD<0.0)
{
//Breakiterationandproceedtotestnexthour
dfA0=dfA2; //SUNUP.BAS250
dfD0=dfD2; //SUNUP.BAS250
continue; //SUNUP.BAS610
}
tempD=Math.sqrt(tempD); //SUNUP.BAS620
//Determineoccurenceofsunriseorsunset.
//Flagstoidentifyoccurrenceduringthisdayare
//bSunriseTodayandbSunsetToday,andareinitializedfalse.
//Thesearesettrueonlyifsunriseorsunsetoccurs
//atanypointinthehourlyloop.Neversettofalse.
//Flagstoidentifyoccurrenceduringthishour:
bSunrise=false; //resetbeforetest
bSunset =false; //resetbeforetest
if(dfV0<0.0&&dfV2>0.0) //sunriseoccursthishour
{
bSunrise=true; //SUNUP.BAS640
bSunriseToday=true; //sunriseoccurredtoday
}
if(dfV0>0.0&&dfV2<0.0) //sunsetoccursthishour
{
bSunset=true; //SUNUP.BAS660
bSunsetToday=true; //sunsetoccurredtoday
}
tempE=(tempD-tempB)/(2.0*tempA);
if(tempE>1.0||tempE<0.0) //SUNUP.BAS670,680
tempE=(-tempD-tempB)/(2.0*tempA);
//Setvaluesofhourandminuteofsunsetorsunrise
//onlyifsunrise/setoccurredthishour.
if(bSunrise)
{
dfHourRise=Math.floor(dfC0+tempE+1.0/120.0);
dfMinRise =Math.floor(
(dfC0+tempE+1.0/120.0
-dfHourRise
)
*60.0
);
}
if(bSunset)
{
dfHourSet =Math.floor(dfC0+tempE+1.0/120.0);
dfMinSet =Math.floor(
(dfC0+tempE+1.0/120.0
-dfHourSet
)
*60.0
);
}
//Changesettingsofvariablesfornextloop
dfA0=dfA2; //SUNUP.BAS250
dfD0=dfD2; //SUNUP.BAS250
} //endoflooptestingeachhourforanevent
//Afterhavingcheckedallhours,setflagsifnoriseorset
//bSunUpAllDayandbSundownAllDayareinitializedasfalse
if(!bSunriseToday&&!bSunsetToday)
{
if(dfV2<0.0)
bSunDownAllDay=true;
else
bSunUpAllDay=true;
}
//LoaddateSunrisewithdata
dfmtDateTime=newSimpleDateFormat("dMyyyyHH:mmz");
if(bSunriseToday)
{
dateSunrise=dfmtDateTime.parse(iDay
+""+iMonth
+""+iYear
+""+(int)dfHourRise
+":"+(int)dfMinRise
+"GMT");
}
//LoaddateSunsetwithdata
if(bSunsetToday)
{
dateSunset=dfmtDateTime.parse(iDay
+""+iMonth
+""+iYear
+""+(int)dfHourSet
+":"+(int)dfMinSet
+"GMT");
}
}//endoftry
//Catcherrors
catch(ParseExceptione)
{
System.out.println("\nCannotparsedate");
System.out.println(e);
System.exit(1);
}//endofcatch
}
/******************************************************************************
* method: getSunrise()
*******************************************************************************
*
* Getsthedateandtimeofsunrise. Ifthereisnosunrise,returnsnull.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicDategetSunrise()
{
if(bSunriseToday)
return(dateSunrise);
else
return(null);
}
/******************************************************************************
* method: getSunset()
*******************************************************************************
*
* Getsthedateandtimeofsunset. Ifthereisnosunset,returnsnull.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicDategetSunset()
{
if(bSunsetToday)
return(dateSunset);
else
return(null);
}
/******************************************************************************
* method: isSunrise()
*******************************************************************************
*
* Returnsabooleanidentifyingiftherewasasunrise.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicbooleanisSunrise()
{
return(bSunriseToday);
}
/******************************************************************************
* method: isSunset()
*******************************************************************************
*
* Returnsabooleanidentifyingiftherewasasunset.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicbooleanisSunset()
{
return(bSunsetToday);
}
/******************************************************************************
* method: isSunUp()
*******************************************************************************
*
* Returnsabooleanidentifyingifthesunisupallday.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicbooleanisSunUp()
{
return(bSunUpAllDay);
}
/******************************************************************************
* method: isSunDown()
*******************************************************************************
*
* Returnsabooleanidentifyingifthesunisdownallday.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicbooleanisSunDown()
{
return(bSunDownAllDay);
}
/******************************************************************************
* method: isDaytime()
*******************************************************************************
*
* Returnsabooleanidentifyingifitisdaytimeatthehourcontainedin
* theDateobjectpassedtoSunriseSunsetonconstruction.
*
* MemberofSunriseSunsetclass
*
*--------------------------------------------------------------------------*/
publicbooleanisDaytime()
{
//Determineifitisdaytime(atsunriseorlater)
// ornighttime(atsunsetorlater)atthelocationofinterest
// butexpressedinthetimezonerequested.
if(bSunriseToday&&bSunsetToday) //sunriseandsunset
{
if(dateSunrise.before(dateSunset)) //sunrise<sunset
{
if(
(
dateInput.after(dateSunrise)
dateInput.equals(dateSunrise)
)
&&
dateInput.before(dateSunset)
)
bDaytime=true;
else
bDaytime=false;
}
else //sunrisecomesaftersunset(inoppositetimezones)
{
if(
(
dateInput.after(dateSunrise)
dateInput.equals(dateSunrise)
)
|| //useORratherthanAND
dateInput.before(dateSunset)
)
bDaytime=true;
else
bDaytime=false;
}
}
elseif(bSunUpAllDay) //sunisupallday
bDaytime=true;
elseif(bSunDownAllDay) //sunisdownallday
bDaytime=false;
elseif(bSunriseToday) //sunrisebutnosunset
{
if(dateInput.before(dateSunrise))
bDaytime=false;
else
bDaytime=true;
}
elseif(bSunsetToday) //sunsetbutnosunrise
{
if(dateInput.before(dateSunset))
bDaytime=true;
else
bDaytime=false;
}
elsebDaytime=false; //thisshouldneverexecute
return(bDaytime);
}
}//endofclass
/*-----------------------------------------------------------------------------
* endofclass
*----------------------------------------------------------------------------*/
相关文章
- JAVA贪吃蛇代码(带注释)
- java生成时间戳类型_Java获取当前时间戳的方法有哪些
- java单例模式——详解JAVA单例模式及8种实现方式
- java冒泡排序经典代码_Java 8大经典排序算法(含源代码),必须收藏!
- Java实现水仙花数简单代码
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- Java版五子棋小游戏(java控制台)
- Java多态理解_什么是java多态
- Java入门代码_java编程自学网
- JAVA实验室设备管理系统代码_java做一个简单学生管理系统
- rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…
- java接入微信小程序步骤和代码示例
- 【错误记录】Android Studio 4.2.1 编译报错 ( 设置支持的 Java 和 Kotlin 版本 | java.lang.BootstrapMethodError )
- java并发编程(2):Java多线程-java.util.concurrent高级工具
- 如何用70行Java代码实现深度神经网络算法详解编程语言
- java JNI: C 语言调用 Java 方法示例详解编程语言
- 邀请码生成器Java代码详解编程语言
- Java学习笔记之十三初探Java面向对象的过程及代码实现详解编程语言
- 代码Linux下编写Java代码的指南(linux编写java)
- Java 与 Linux 的结合:开启新时代(java和linux)
- Linux下快速编写高效的Java代码(linux写java)
- 程序Linux命令调用Java程序实现交互(linux命令java)
- 版本配置Linux系统的默认Java版本(linux默认java)
- Linux Java时区调整:让处理日期更加方便(linux java时区)
- 使用Java连接MySQL数据库的具体操作方法(java连接mysql代码)
- java获取当前函数名的实现代码
- java获取当前时间和前一天日期(实现代码)