Package: libjlha-java / 0.0.20050504-11

03_DateDeprecation.patch Patch series | download
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." );
     }