|
根据经纬度和当前日期获取当地的日出日落时间,强大的Google搜索让我迅速找到了一个外国人写的一个java类,代码中的注释写得很清楚。 这里直接贴出代码来: 复制代码 代码如下: /****************************************************************************** * * SunriseSunset.java * ******************************************************************************* * * Java Class: SunriseSunset * * This Java class is part of a collection of classes developed for the * reading and processing of oceanographic and meterological data collected * since 1970 by environmental buoys and stations. This dataset is * maintained by the National Oceanographic Data Center and is publicly * available. These Java classes were written for the US Environmental * Protection Agency's National Exposure Research Laboratory under Contract * No. GS-10F-0073K with Neptune and Company of Los Alamos,New Mexico. * * Purpose: * * This Java class performs calculations to determine the time of * sunrise and sunset given lat,long,and date. * * Inputs: * * Latitude,longitude,date/time,and time zone. * * Outputs: * * Local time of sunrise and sunset as calculated by the * program. * If no sunrise or no sunset occurs,or if the sun is up all day * or down all day,appropriate boolean values are set. * A boolean is provided to identify if the time provided is during the day. * * The above values are accessed by the following methods: * * Date getSunrise() returns date/time of sunrise * Date getSunset() returns date/time of sunset * boolean isSunrise() returns true if there was a sunrise,else false * boolean isSunset() returns true if there was a sunset,else false * boolean isSunUp() returns true if sun is up all day,else false * boolean isSunDown() returns true if sun is down all day,else false * boolean isDaytime() returns true if sun is up at the time * specified,else false * * Required classes from the Java library: * * java.util.Date * java.text.SimpleDateFormat * java.text.ParseException; * java.math.BigDecimal; * * Package of which this class is a member: * * default * * Known limitations: * * It is assumed that the data provided are within valie ranges * (i.e. latitude between -90 and +90,longitude between 0 and 360, * a valid date,and time zone between -14 and +14. * * Compatibility: * * Java 1.1.8 * * References: * * The mathematical algorithms used in this program are patterned * after those debveloped by Roger Sinnott in his BASIC program, * SUNUP.BAS,published in Sky & Telescope magazine: * Sinnott,Roger W. "Sunrise and Sunset: A Challenge" * Sky & Telescope,August,1994 p.84-85 * * The following is a cross-index of variables used in SUNUP.BAS. * A single definition from multiple reuse of variable names in * SUNUP.BAS was clarified with various definitions in this program. * * SUNUP.BAS this class * * A dfA * A(2) dfAA1,dfAA2 * A0 dfA0 * A2 dfA2 * A5 dfA5 * AZ Not used * C dfCosLat * C0 dfC0 * D iDay * D(2) dfDD1,dfDD2 * D0 dfD0 * D1 dfD1 * D2 dfD2 * D5 dfD5 * D7 Not used * DA dfDA * DD dfDD * G bGregorian,dfGG * H dfTimeZone * H0 dfH0 * H1 dfH1 * H2 dfH2 * H3 dfHourRise,dfHourSet * H7 Not used * J dfJ * J3 dfJ3 * K1 dfK1 * L dfLL * L0 dfL0 * L2 dfL2 * L5 dfLon * M iMonth * M3 dfMinRise,dfMinSet * N7 Not used * P dfP * S iSign,dfSinLat,dfSS * T dfT * T0 dfT0 * T3 not used * TT dfTT * U dfUU * V dfVV * V0 dfV0 * V1 dfV1 * V2 dfV2 * W dfWW * Y iYear * Z dfZenith * Z0 dfTimeZone * * * Author/Company: * * JDT: John Tauxe,Neptune and Company * JMG: Jo Marie Green * * Change log: * * date ver by description of change * _________ _____ ___ ______________________________________________ * 5 Jan 01 0.006 JDT Excised from ssapp.java v. 0.005. * 11 Jan 01 0.007 JDT Minor modifications to comments based on * material from Sinnott,1994. * 7 Feb 01 0.008 JDT Fixed backwards time zone. The standard is that * local time zone is specified in hours EAST of * Greenwich,so that EST would be -5,for example. * For some reason,SUNUP.BAS does this backwards * (probably an americocentric perspective) and * SunriseSunset adopted that convention. Oops. * So the sign in the math is changed. * 7 Feb 01 0.009 JDT Well,that threw off the azimuth calculation... * Removed the azimuth calculations. * 14 Feb 01 0.010 JDT Added ability to accept a time (HH:mm) in * dateInput,and decide if that time is daytime * or nighttime. * 27 Feb 01 0.011 JDT Added accessor methods in place of having public * variables to get results. * 28 Feb 01 0.012 JDT Cleaned up list of imported classes. * 28 Mar 01 1.10 JDT Final version accompanying deliverable 1b. * 4 Apr 01 1.11 JDT Moved logic supporting .isDaytime into method. * Moved calculations out of constructor. * 01 May 01 1.12 JMG Added 'GMT' designation and testing lines. * 16 May 01 1.13 JDT Added setLenient( false ) and setTimeZone( tz ) * to dfmtDay,dfmtMonth,and dfmtYear in * doCalculations. * 27 Jun 01 1.14 JDT Removed reliance on StationConstants (GMT). * 13 Aug 01 1.20 JDT Final version accompanying deliverable 1c. * 6 Sep 01 1.21 JDT Thorough code and comment review. * 21 Sep 01 1.30 JDT Final version accompanying deliverable 2. * 17 Dec 01 1.40 JDT Version accompanying final deliverable. * *----------------------------------------------------------------------------*/
// Import required classes and packages import java.util.Date; import java.text.SimpleDateFormat; import java.text.ParseException; import java.math.BigDecimal; import java.util.TimeZone;
/****************************************************************************** * class: SunriseSunset class ******************************************************************************* * * This Java class performs calculations to determine the time of * sunrise and sunset given lat,and date. * * It is assumed that the data provided are within valie ranges * (i.e. latitude between -90 and +90,and time zone between -14 and +14. * *----------------------------------------------------------------------------*/ public class SunriseSunset {
// Declare and initialize variables private double dfLat; // latitude from user private double dfLon; // latitude from user private Date dateInput; // date/time from user private double dfTimeZone; // time zone from user
private Date dateSunrise; // date and time of sunrise private Date dateSunset; // date and time of sunset private boolean bSunriseToday = false; // flag for sunrise on this date private boolean bSunsetToday = false; // flag for sunset on this date private boolean bSunUpAllDay = false; // flag for sun up all day private boolean bSunDownAllDay = false; // flag for sun down all day private boolean bDaytime = false; // flag for daytime,given // hour and min in dateInput private boolean bSunrise = false; // sunrise during hour checked private boolean bSunset = false; // sunset during hour checked private boolean bGregorian = false; // flag for Gregorian calendar private int iJulian; // Julian day private int iYear; // year of date of interest private int iMonth; // month of date of interest private int iDay; // day of date of interest private int iCount; // a simple counter private int iSign; // SUNUP.BAS: S private double dfHourRise,dfHourSet; // hour of event: SUNUP.BAS H3 private double dfMinRise,dfMinSet; // minute of event: SUNUP.BAS M3 private double dfSinLat,dfCosLat; // sin and cos of latitude private double dfZenith; // SUNUP.BAS Z: Zenith private SimpleDateFormat dfmtDate; // formatting for date alone private SimpleDateFormat dfmtDateTime; // formatting for date and time private SimpleDateFormat dfmtYear; // formatting for year private SimpleDateFormat dfmtMonth; // formatting for month private SimpleDateFormat dfmtDay; // formatting for day // Many variables in SUNUP.BAS have undocumented meanings, // and so are translated rather directly to avoid confusion: private double dfAA1 = 0,dfAA2 = 0; // SUNUP.BAS A(2) private double dfDD1 = 0,dfDD2 = 0; // SUNUP.BAS D(2) private double dfC0; // SUNUP.BAS C0 private double dfK1; // SUNUP.BAS K1 private double dfP; // SUNUP.BAS P private double dfJ; // SUNUP.BAS J private double dfJ3; // SUNUP.BAS J3 private double dfA; // SUNUP.BAS A private double dfA0,dfA2,dfA5; // SUNUP.BAS A0,A2,A5 private double dfD0,dfD1,dfD2,dfD5; // SUNUP.BAS D0,D1,D2,D5 private double dfDA,dfDD; // SUNUP.BAS DA,DD private double dfH0,dfH1,dfH2; // SUNUP.BAS H0,H1,H2 private double dfL0,dfL2; // SUNUP.BAS L0,L2 private double dfT,dfT0,dfTT; // SUNUP.BAS T,T0,TT private double dfV0,dfV1,dfV2; // SUNUP.BAS V0,V1,V2
private TimeZone tz = TimeZone.getTimeZone( "GMT" );
/****************************************************************************** * method: SunriseSunset ******************************************************************************* * * Constructor for SunriseSunset class. * *----------------------------------------------------------------------------*/ SunriseSunset( double dfLatIn, // latitude double dfLonIn, // longitude Date dateInputIn, // date double dfTimeZoneIn // time zone ) { // Copy values supplied as agruments to local variables. dfLat = dfLatIn; dfLon = dfLonIn; dateInput = dateInputIn; dfTimeZone = dfTimeZoneIn;
// Call the method to do the calculations. doCalculations();
} // end of class constructor
/****************************************************************************** * method: doCalculations ******************************************************************************* * * Method for performing the calculations done in SUNUP.BAS. * *----------------------------------------------------------------------------*/ private void doCalculations() { try { // Break out day,month,and year from date provided. // (This is necesary for the math algorithms.)
dfmtYear = new SimpleDateFormat( "yyyy" ); dfmtYear.setLenient( false ); dfmtYear.setTimeZone( tz );
dfmtMonth = new SimpleDateFormat( "M" ); dfmtMonth.setLenient( false ); dfmtMonth.setTimeZone( tz );
dfmtDay = new SimpleDateFormat( "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 ) );
// Convert time zone hours to decimal days (SUNUP.BAS line 50) dfTimeZone = dfTimeZone / 24.0;
// NOTE: (7 Feb 2001) Here is a non-standard part of SUNUP.BAS: // It (and this algorithm) assumes that the time zone is // positive west,instead of the standard negative west. // Classes calling SunriseSunset will be assuming that // times zones are specified in negative west,so here the // sign is changed so that the SUNUP algorithm works: dfTimeZone = -dfTimeZone;
// Convert longitude to fraction (SUNUP.BAS line 50) dfLon = dfLon / 360.0;
// Convert calendar date to Julian date: // Check to see if it's later than 1583: Gregorian calendar // When declared,bGregorian is initialized to false. // ** Consider making a separate class of this function. ** if( iYear >= 1583 ) bGregorian = true; // SUNUP.BAS 1210 dfJ = -Math.floor( 7.0 // SUNUP used INT,not floor * ( Math.floor( ( iMonth + 9.0 ) / 12.0 ) + iYear ) / 4.0 ) // add SUNUP.BAS 1240 and 1250 for G = 0 + Math.floor( iMonth * 275.0 / 9.0 ) + iDay + 1721027.0 + iYear * 367.0;
if ( bGregorian ) { // SUNUP.BAS 1230 if ( ( iMonth - 9.0 ) < 0.0 ) iSign = -1; else iSign = 1; dfA = Math.abs( iMonth - 9.0 ); // SUNUP.BAS 1240 and 1250 dfJ3 = -Math.floor( ( Math.floor( Math.floor( iYear + (double)iSign * Math.floor( dfA / 7.0 ) ) / 100.0 ) + 1.0 ) * 0.75 ); // correct dfJ as in SUNUP.BAS 1240 and 1250 for G = 1 dfJ = dfJ + dfJ3 + 2.0; } // SUNUP.BAS 1290 iJulian = (int)dfJ - 1;
// SUNUP.BAS 60 and 70 (see also line 1290) dfT = (double)iJulian - 2451545.0 + 0.5; dfTT = dfT / 36525.0 + 1.0; // centuries since 1900
// Calculate local sidereal time at 0h in zone time // SUNUP.BAS 410 through 460 dfT0 = ( dfT * 8640184.813 / 36525.0 + 24110.5 + dfTimeZone * 86636.6 + dfLon * 86400.0 ) / 86400.0; dfT0 = dfT0 - Math.floor( dfT0 ); // NOTE: SUNUP.BAS uses INT() dfT0 = dfT0 * 2.0 * Math.PI; // SUNUP.BAS 90 dfT = dfT + dfTimeZone;
// SUNUP.BAS 110: Get Sun's position for( iCount=0; iCount<=1; iCount++ ) // Loop thru only twice { // Calculate Sun's right ascension and declination // at the start and end of each day. // SUNUP.BAS 910 - 1160: Fundamental arguments // from van Flandern and Pulkkinen,1979
// declare local temporary doubles for calculations double dfGG; // SUNUP.BAS G double dfLL; // SUNUP.BAS L double dfSS; // SUNUP.BAS S double dfUU; // SUNUP.BAS U double dfVV; // SUNUP.BAS V double dfWW; // SUNUP.BAS W
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;
// Compute Sun's RA and Dec; SUNUP.BAS 1120 - 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 ));
// Set values and increment t if ( iCount == 0 ) // SUNUP.BAS 125 { dfAA1 = dfA5; dfDD1 = dfD5; } else // SUNUP.BAS 145 { dfAA2 = dfA5; dfDD2 = dfD5; } dfT = dfT + 1.0; // SUNUP.BAS 130 } // end of Get Sun's Position for loop
if ( dfAA2 < dfAA1 ) dfAA2 = dfAA2 + 2.0 * Math.PI; // SUNUP.BAS 150
dfZenith = Math.PI * 90.833 / 180.0; // SUNUP.BAS 160 dfSinLat = Math.sin( dfLat * Math.PI / 180.0 ); // SUNUP.BAS 170 dfCosLat = Math.cos( dfLat * Math.PI / 180.0 ); // SUNUP.BAS 170
dfA0 = dfAA1; // SUNUP.BAS 190 dfD0 = dfDD1; // SUNUP.BAS 190 dfDA = dfAA2 - dfAA1; // SUNUP.BAS 200 dfDD = dfDD2 - dfDD1; // SUNUP.BAS 200
dfK1 = 15.0 * 1.0027379 * Math.PI / 180.0; // SUNUP.BAS 330
// Initialize sunrise and sunset times,and other variables // hr and min are set to impossible times to make errors obvious dfHourRise = 99.0; dfMinRise = 99.0; dfHourSet = 99.0; dfMinSet = 99.0; dfV0 = 0.0; // initialization implied by absence in SUNUP.BAS dfV2 = 0.0; // initialization implied by absence in SUNUP.BAS
// Test each hour to see if the Sun crosses the horizon // and which way it is heading. for( iCount=0; iCount<24; iCount++ ) // SUNUP.BAS 210 { double tempA; // SUNUP.BAS A double tempB; // SUNUP.BAS B double tempD; // SUNUP.BAS D double tempE; // SUNUP.BAS E
dfC0 = (double)iCount; dfP = ( dfC0 + 1.0 ) / 24.0; // SUNUP.BAS 220 dfA2 = dfAA1 + dfP * dfDA; // SUNUP.BAS 230 dfD2 = dfDD1 + dfP * dfDD; // SUNUP.BAS 230 dfL0 = dfT0 + dfC0 * dfK1; // SUNUP.BAS 500 dfL2 = dfL0 + dfK1; // SUNUP.BAS 500 dfH0 = dfL0 - dfA0; // SUNUP.BAS 510 dfH2 = dfL2 - dfA2; // SUNUP.BAS 510 // hour angle at half hour dfH1 = ( dfH2 + dfH0 ) / 2.0; // SUNUP.BAS 520 // declination at half hour dfD1 = ( dfD2 + dfD0 ) / 2.0; // SUNUP.BAS 530
// Set value of dfV0 only if this is the first hour, // otherwise,it will get set to the last dfV2 (SUNUP.BAS 250) if ( iCount == 0 ) // SUNUP.BAS 550 { dfV0 = dfSinLat * Math.sin( dfD0 ) + dfCosLat * Math.cos( dfD0 ) * Math.cos( dfH0 ) - Math.cos( dfZenith ); // SUNUP.BAS 560 } else dfV0 = dfV2; // That is,dfV2 from the previous hour.
dfV2 = dfSinLat * Math.sin( dfD2 ) + dfCosLat * Math.cos( dfD2 ) * Math.cos( dfH2 ) - Math.cos( dfZenith ); // SUNUP.BAS 570
// if dfV0 and dfV2 have the same sign,then proceed to next hr if ( ( dfV0 >= 0.0 && dfV2 >= 0.0 ) // both are positive || // or ( dfV0 < 0.0 && dfV2 < 0.0 ) // both are negative ) { // Break iteration and proceed to test next hour dfA0 = dfA2; // SUNUP.BAS 250 dfD0 = dfD2; // SUNUP.BAS 250 continue; // SUNUP.BAS 610 }
dfV1 = dfSinLat * Math.sin( dfD1 ) + dfCosLat * Math.cos( dfD1 ) * Math.cos( dfH1 ) - Math.cos( dfZenith ); // SUNUP.BAS 590
tempA = 2.0 * dfV2 - 4.0 * dfV1 + 2.0 * dfV0; // SUNUP.BAS 600 tempB = 4.0 * dfV1 - 3.0 * dfV0 - dfV2; // SUNUP.BAS 600 tempD = tempB * tempB - 4.0 * tempA * dfV0; // SUNUP.BAS 610
if ( tempD < 0.0 ) { // Break iteration and proceed to test next hour dfA0 = dfA2; // SUNUP.BAS 250 dfD0 = dfD2; // SUNUP.BAS 250 continue; // SUNUP.BAS 610 }
tempD = Math.sqrt( tempD ); // SUNUP.BAS 620
// Determine occurence of sunrise or sunset.
// Flags to identify occurrence during this day are // bSunriseToday and bSunsetToday,and are initialized false. // These are set true only if sunrise or sunset occurs // at any point in the hourly loop. Never set to false.
// Flags to identify occurrence during this hour: bSunrise = false; // reset before test bSunset = false; // reset before test
if ( dfV0 < 0.0 && dfV2 > 0.0 ) // sunrise occurs this hour { bSunrise = true; // SUNUP.BAS 640 bSunriseToday = true; // sunrise occurred today }
if ( dfV0 > 0.0 && dfV2 < 0.0 ) // sunset occurs this hour { bSunset = true; // SUNUP.BAS 660 bSunsetToday = true; // sunset occurred today }
tempE = ( tempD - tempB ) / ( 2.0 * tempA ); if ( tempE > 1.0 || tempE < 0.0 ) // SUNUP.BAS 670,680 tempE = ( -tempD - tempB ) / ( 2.0 * tempA );
// Set values of hour and minute of sunset or sunrise // only if sunrise/set occurred this hour. 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 ); }
// Change settings of variables for next loop dfA0 = dfA2; // SUNUP.BAS 250 dfD0 = dfD2; // SUNUP.BAS 250
} // end of loop testing each hour for an event
// After having checked all hours,set flags if no rise or set // bSunUpAllDay and bSundownAllDay are initialized as false if ( !bSunriseToday && !bSunsetToday ) { if ( dfV2 < 0.0 ) bSunDownAllDay = true; else bSunUpAllDay = true; }
// Load dateSunrise with data dfmtDateTime = new SimpleDateFormat( "d M yyyy HH:mm z" ); if( bSunriseToday ) { dateSunrise = dfmtDateTime.parse( iDay + " " + iMonth + " " + iYear + " " + (int)dfHourRise + ":" + (int)dfMinRise + " GMT" ); }
// Load dateSunset with data if( bSunsetToday ) { dateSunset = dfmtDateTime.parse( iDay + " " + iMonth + " " + iYear + " " + (int)dfHourSet + ":" + (int)dfMinSet + " GMT" ); } } // end of try
// Catch errors catch( ParseException e ) { System.out.println( "nCannot parse date" ); System.out.println( e ); System.exit( 1 ); } // end of catch
}
/****************************************************************************** * method: getSunrise() ******************************************************************************* * * Gets the date and time of sunrise. If there is no sunrise,returns null. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public Date getSunrise() { if ( bSunriseToday ) return( dateSunrise ); else return( null ); }
/****************************************************************************** * method: getSunset() ******************************************************************************* * * Gets the date and time of sunset. If there is no sunset,returns null. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public Date getSunset() { if ( bSunsetToday ) return( dateSunset ); else return( null ); }
/****************************************************************************** * method: isSunrise() ******************************************************************************* * * Returns a boolean identifying if there was a sunrise. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public boolean isSunrise() { return( bSunriseToday ); }
/****************************************************************************** * method: isSunset() ******************************************************************************* * * Returns a boolean identifying if there was a sunset. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public boolean isSunset() { return( bSunsetToday ); }
/****************************************************************************** * method: isSunUp() ******************************************************************************* * * Returns a boolean identifying if the sun is up all day. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public boolean isSunUp() { return( bSunUpAllDay ); }
/****************************************************************************** * method: isSunDown() ******************************************************************************* * * Returns a boolean identifying if the sun is down all day. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public boolean isSunDown() { return( bSunDownAllDay ); }
/****************************************************************************** * method: isDaytime() ******************************************************************************* * * Returns a boolean identifying if it is daytime at the hour contained in * the Date object passed to SunriseSunset on construction. * * Member of SunriseSunset class * * -------------------------------------------------------------------------- */ public boolean isDaytime() { // Determine if it is daytime (at sunrise or later) // or nighttime (at sunset or later) at the location of interest // but expressed in the time zone requested. if ( bSunriseToday && bSunsetToday ) // sunrise and sunset { if ( dateSunrise.before( dateSunset ) ) // sunrise < sunset { if ( ( dateInput.after( dateSunrise )
dateInput.equals( dateSunrise ) ) && dateInput.before( dateSunset ) ) bDaytime = true; else bDaytime = false; } else // sunrise comes after sunset (in opposite time zones) { if ( ( dateInput.after( dateSunrise )
dateInput.equals( dateSunrise ) ) || // use OR rather than AND dateInput.before( dateSunset ) ) bDaytime = true; else bDaytime = false; } } else if ( bSunUpAllDay ) // sun is up all day bDaytime = true; else if ( bSunDownAllDay ) // sun is down all day bDaytime = false; else if ( bSunriseToday ) // sunrise but no sunset { if ( dateInput.before( dateSunrise ) ) bDaytime = false; else bDaytime = true; } else if ( bSunsetToday ) // sunset but no sunrise { if ( dateInput.before( dateSunset ) ) bDaytime = true; else bDaytime = false; } else bDaytime = false; // this should never execute
return( bDaytime ); }
} // end of class
/*----------------------------------------------------------------------------- * end of class *----------------------------------------------------------------------------*/
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|