📄 testdate.java
字号:
int[] age = BigDate.age( mlk, today );
System.out
.println( "Martin Luther King would be "
+ age[ 0 ]
+ " years and "
+ age[ 1 ]
+ " months and "
+ age[ 2 ]
+ " days old today." );
}
sep();
{
BigDate al = new BigDate( 1865, 4, 18 );
BigDate jfk = new BigDate( 1963, 11, 22 );
BigDate mlk = new BigDate( 1968, 4, 4 );
BigDate rfk = new BigDate( 1968, 6, 5 );// according to http://foia.fbi.gov/foiaindex/rfkasumm.htm
BigDate als = new BigDate( 1981, 10, 6 );
BigDate zar = new BigDate( 2006, 6, 8 );
BigDate bb = new BigDate( 2007, 12, 27 );
System.out.println( "Abraham Lincoln was assassinated on " + al.toString() + "." );
int[] elapsed = BigDate.age( al, jfk );
System.out.println( "John Fitzgerald Kennedy was assassinated on " + jfk.toString()
+ ", "
+ elapsed[ 0 ]
+ " years and "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
elapsed = BigDate.age( jfk, mlk );
System.out.println( "Martin Luther King was assassinated on " + mlk.toString()
+ ", "
+ elapsed[ 0 ]
+ " years and "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
elapsed = BigDate.age( mlk, rfk );
System.out.println( "Robert Francis (Bobby) Kennedy was assassinated on " + rfk.toString()
+ ", "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
elapsed = BigDate.age( rfk, als );
System.out.println( "Anwar El Sadat was assassinated on " + bb.toString()
+ ", "
+ elapsed[ 0 ]
+ " years and "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
elapsed = BigDate.age( als, zar );
System.out.println( "Abu Musab al-Zarqawi was assassinated on " + bb.toString()
+ ", "
+ elapsed[ 0 ]
+ " years and "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
elapsed = BigDate.age( zar, bb );
System.out.println( "Benazir Bhutto was assassinated on " + bb.toString()
+ ", "
+ elapsed[ 0 ]
+ " years and "
+ elapsed[ 1 ]
+ " months and "
+ elapsed[ 2 ]
+ " days later." );
}
sep();
{
// Mysterious missing days in the calendar.
// Pope Gregory: 1582 Oct 4 Thursday, was followed immediately
// by 1582 Oct 15 Friday dropping 10 days.
//
// British: 1752 Sep 2 Wednesday was followed immediately
// by 1752 Sep 14 Thursday dropping 12 days.
BigDate priorDate;
BigDate afterDate;
if ( BigDate.isBritish )
{
System.out
.println(
"According to the British/American/Canadian calendar, 12 days were dropped." );
priorDate = new BigDate( 1752, 9, 2 );
afterDate = new BigDate( 1752, 9, 14 );
}
else
{
System.out
.println(
"According to Pope Gregory's calendar, 10 days were dropped." );
priorDate = new BigDate( 1582, 10, 4 );
afterDate = new BigDate( 1582, 10, 15 );
}
final String[] daysOfTheWeek = {
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday" };
int dayOfWeek = priorDate.getDayOfWeek();
System.out
.println( priorDate.toString()
+ " was a "
+ daysOfTheWeek[ dayOfWeek ]
+ "." );
dayOfWeek = afterDate.getDayOfWeek();
System.out
.println( afterDate.toString()
+ " was a "
+ daysOfTheWeek[ dayOfWeek ]
+ "." );
}
pause();
{
// What is the Julian Day number of various dates 1970/1/1
// Cross check these with the US Naval Observatory at:
// http://aa.usno.navy.mil/AA/data/docs/JulianDate.html
BigDate bigDate = new BigDate( 2000, 3, 20 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for 2000/03/20 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( 1970, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for 1970/01/01 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( 1600, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for 1600/01/01 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( 1500, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for 1500/01/01 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( 1, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for 0001/01/01 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( -1, 12, 31 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for -0001/12/31 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( -6, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for -0006/01/01 is "
+ bigDate.getProlepticJulianDay() );
bigDate = new BigDate( -4713, 1, 1 );
System.out
.println(
"Astronomical Julian Proleptic calendar day for -4713/01/01 is "
+ bigDate.getProlepticJulianDay() );
}
pause();
{
// How long till Christmas? ( Sun's way.)
// this code will give a negative number just after Christmas.
System.out
.println( "Your child asks, how long is it until Christmas?" );
System.out
.println(
"Here are the possible answers you might give to an American child" );
GregorianCalendar now = new GregorianCalendar();
int thisYear = now.get( Calendar.YEAR );
// You may open presents at 7 AM December 25, local time
System.out
.println(
"You may open your presents at 7 AM Christmas morning." );
GregorianCalendar christmas =
new GregorianCalendar( thisYear, 12 - 1, 25, 7, 0, 0 );
// millis since 1970 Jan 1
long christmasTimeStamp = christmas.getTime().getTime();
long nowTimeStamp = now.getTime().getTime();
double dayUnitsDiff =
( christmasTimeStamp - nowTimeStamp )
/ ( double ) MILLISECONDS_PER_DAY;
System.out
.println( "1. It is "
+ dayUnitsDiff
+ " day units of 24 hours until you may open your presents." );
System.out
.println( "2. It is "
+ Math.ceil( dayUnitsDiff )
+ " day units of 24 hours rounded up until you may open your presents." );
System.out
.println( "3. It is "
+ Math.round( dayUnitsDiff )
+ " day units of 24 hours rounded until you may open your presents." );
System.out
.println( "4. It is "
+ Math.floor( dayUnitsDiff )
+ " day units of 24 hours rounded down until you may open your presents." );
int gmtChristmasOrdinal =
( int ) ( christmasTimeStamp / MILLISECONDS_PER_DAY );
int gmtNowOrdinal = ( int ) ( nowTimeStamp / MILLISECONDS_PER_DAY );
int gmtDiffInDays = gmtChristmasOrdinal - gmtNowOrdinal;
System.out
.println( "5. Children in Greenwich have "
+ gmtDiffInDays
+ " sleeps (midnight crossings) to go until\n"
+ "you may open your presents.\n"
+ "They may open theirs even sooner." );
// For children living in the USA, the timezone offset will be
// negative.
// days since 1970 Jan 1
// There is no GregorianCalender.getOffset or
// get(ADJUSTED_ZONE_OFFSET);
int christmasZoneOffset =
christmas.get( Calendar.ZONE_OFFSET )
+ now.get( Calendar.DST_OFFSET );
int localChristmasOrdinal =
( int ) ( ( christmasTimeStamp + christmasZoneOffset )
/ MILLISECONDS_PER_DAY );
int nowZoneOffset =
now.get( Calendar.ZONE_OFFSET )
+ now.get( Calendar.DST_OFFSET );
int localNowOrdinal =
( int ) ( ( nowTimeStamp + nowZoneOffset )
/ MILLISECONDS_PER_DAY );
int localDiffInDays = localChristmasOrdinal - localNowOrdinal;
System.out
.println( "6. You have "
+ localDiffInDays
+ " sleeps (midnight crossings) to go." );
}
{
// how long till Christmas? ( with BigDate. )
// this code will give a negative number just after Christmas.
BigDate today = BigDate.localToday();
BigDate christmas = new BigDate( today.getYYYY(), 12, 25 );
System.out
.println( "7. Uncle Roedy's Bigdate says it is "
+ ( christmas.getOrdinal() - today.getOrdinal() )
+ " sleeps until Christmas." );
int[] age = BigDate.age( today, christmas );
System.out
.println( "8. Or put another way "
+ age[ 0 ]
+ " years and "
+ age[ 1 ]
+ " months and "
+ age[ 2 ]
+ " days to go." );
}
}// end demoDate
/**
* Display an error message and exit.
*
* @param why the error message explaining why we are terminating.
*/
private static void fail( String why )
{
System.out.println( why );
pause();
System.exit( 99 );
}
/**
* Pauses the display until the user hits enter.
*
* @noinspection ResultOfMethodCallIgnored
*/
private static void pause()
{
count = 0;
System.out.println();
try
{
for ( int available = System.in.available(); available
> 0; available-- )
{
// discard pending chars
System.in.read();
}
System.out.println( "Hit Enter to continue" );
// might get cr, lf, cr lf. Ignored previous input from InputStream
System.in.read();// wait for user to hit Enter, discard result
}
catch ( IOException e )
{
System.out.println( "keyboard failed" );
}
System.out.println();
System.out.println();
System.out.println();
}// end pause
/**
* Separates items
*/
private static void sep()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -