1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
--- a/jp/gr/java_conf/dangan/util/MsdosDate.java
+++ a/jp/gr/java_conf/dangan/util/MsdosDate.java
@@ -85,7 +85,6 @@
public class MsdosDate extends Date
implements Cloneable {
-
//------------------------------------------------------------------
// constructor
//------------------------------------------------------------------
@@ -117,12 +116,13 @@
* @param time MS-DOS `̎ԏ
*/
public MsdosDate( int time ){
- super( ( ( time >> 25 ) & 0x7F ) + 80,
- ( ( time >> 21 ) & 0x0F ) - 1,
- ( time >> 16 ) & 0x1F,
- ( time >> 11 ) & 0x1F,
- ( time >> 5 ) & 0x3F,
- ( time << 1 ) & 0x3F ); //deprecated
+ super( (new java.util.GregorianCalendar(
+ ((time >> 25 ) & 0x7F ) + 80 + 1900,
+ ((time >> 21 ) & 0x0F ) - 1,
+ ( time >> 16 ) & 0x1F,
+ ( time >> 11 ) & 0x1F,
+ ( time >> 5 ) & 0x3F,
+ ( time << 1 ) & 0x3F )).getTime().getTime() ); //deprecated
this.checkRange();
}
@@ -187,7 +187,10 @@
* Ăꍇ
*/
public void setTime( long time ){
- int year = ( new Date( time ) ).getYear();
+ int year = /*( new Date( time ) ).getYear()*/ 0;
+ java.util.GregorianCalendar c = new java.util.GregorianCalendar();
+ c.setTime(new Date(time));
+ year = c.get(java.util.Calendar.YEAR) - 1900;
if( year < 80 || 207 < year ){
throw new IllegalArgumentException( "out of MS-DOS time format range." );
}else{
@@ -210,12 +213,12 @@
* @param time MS-DOS Ԍ`̎ԏ
*/
public void setMsdosTime( int time ){
- Date date = new Date( ( ( time >> 25 ) & 0x7F ) + 80,
+ Date date = new java.util.GregorianCalendar( ( ( time >> 25 ) & 0x7F ) + 80 + 1900,
( ( time >> 21 ) & 0x0F ) - 1,
( time >> 16 ) & 0x1F,
( time >> 11 ) & 0x1F,
( time >> 5 ) & 0x3F,
- ( time << 1 ) & 0x3F ); //deprecated
+ ( time << 1 ) & 0x3F ).getTime(); //deprecated
this.setTime( date.getTime() );
}
@@ -226,12 +229,14 @@
* @return MS-DOSԌ`̒l
*/
public int getMsdosTime(){
- return ( ( super.getYear() - 80 ) << 25 ) //deprecated
- | ( ( super.getMonth() + 1 ) << 21 ) //deprecated
- | ( super.getDate() << 16 ) //deprecated
- | ( super.getHours() << 11 ) //deprecated
- | ( super.getMinutes() << 5 ) //deprecated
- | ( super.getSeconds() >> 1 ); //deprecated
+ java.util.GregorianCalendar c = new java.util.GregorianCalendar();
+ c.setTime(this);
+ return ( ( c.get(java.util.Calendar.YEAR)-1900 - 80 ) << 25 ) //deprecated
+ | ( ( c.get(java.util.Calendar.MONTH) + 1 ) << 21 ) //deprecated
+ | ( c.get(java.util.Calendar.DAY_OF_MONTH) << 16 ) //deprecated
+ | ( c.get(java.util.Calendar.HOUR_OF_DAY) << 11 ) //deprecated
+ | ( c.get(java.util.Calendar.MINUTE) << 5 ) //deprecated
+ | ( c.get(java.util.Calendar.SECOND) >> 1 ); //deprecated
}
@@ -249,7 +254,10 @@
* ͈͂̎ԂĂꍇ
*/
private void checkRange(){
- int year = this.getYear();
+ int year = /*this.getYear()*/ 0;
+ java.util.GregorianCalendar c = new java.util.GregorianCalendar();
+ c.setTime(this);
+ year = c.get(java.util.Calendar.YEAR) - 1900;
if( year < 80 || 207 < year )
throw new IllegalArgumentException( "out of MS-DOS time format range." );
}
|