Subversion Repository Public Repository

litesoft

Diff Revisions 864 vs 893 for /trunk/Java/core/Anywhere/src/org/litesoft/core/simpletypes/temporal/AbstractTimestampH.java

Diff revisions: vs.
  @@ -66,22 +66,26 @@
66 66 if ( (zPlusOrMinus == '-') || (zPlusOrMinus == '+') )
67 67 {
68 68 zPart = zPart.substring( 1 );
69 - int zOffset = 0;
70 69 switch ( zPart.length() )
71 70 {
72 71 case 5:
73 - if ( zPart.charAt( 2 ) != ':' )
72 + if ( zPart.charAt( 2 ) == ':' )
74 73 {
75 - break;
74 + return parseOffset( zPlusOrMinus, zPart, 2, 3, pStringForm );
76 75 }
77 - zPart = zPart.substring( 0, 2 ) + zPart.substring( 3 );
78 - // Fall Thru
76 + break;
79 77 case 4:
80 - zOffset += parseInt( zPart.substring( 3 ), "Offset Minutes", pStringForm );
81 - zPart = zPart.substring( 0, 2 );
82 - // Fall Thru
78 + if ( zPart.charAt( 1 ) == ':' )
79 + {
80 + return parseOffset( zPlusOrMinus, zPart, 1, 2, pStringForm );
81 + }
82 + return parseOffset( zPlusOrMinus, zPart, 2, 2, pStringForm );
83 + case 3:
84 + return parseOffset( zPlusOrMinus, zPart, 1, 1, pStringForm );
83 85 case 2:
84 - return zOffset + (60 * parseInt( zPart, "Offset Hours", pStringForm ));
86 + return directionalizeOffset( zPlusOrMinus, parseOffsetHours( zPart, 2, pStringForm ), 0 );
87 + case 1:
88 + return directionalizeOffset( zPlusOrMinus, parseOffsetHours( zPart, 1, pStringForm ), 0 );
85 89 default:
86 90 break;
87 91 }
  @@ -89,6 +93,32 @@
89 93 throw new IllegalArgumentException( "Invalid Offset in: " + pStringForm );
90 94 }
91 95
96 + private static int parseOffset( char pPlusOrMinus, String pPart, int pHourUpTo, int pMinFrom, String pStringForm )
97 + {
98 + return parseOffset( pPlusOrMinus, parseOffsetHours( pPart, pHourUpTo, pStringForm ), pPart, pMinFrom, pStringForm );
99 + }
100 +
101 + private static int parseOffset( char pPlusOrMinus, int pHours, String pPart, int pMinFrom, String pStringForm )
102 + {
103 + return directionalizeOffset( pPlusOrMinus, pHours, parseOffsetMinutes( pPart, pMinFrom, pStringForm ) );
104 + }
105 +
106 + private static int directionalizeOffset( char pPlusOrMinus, int pHours, int pMinutes )
107 + {
108 + int zPositiveOffset = (60 * pHours) + pMinutes;
109 + return (pPlusOrMinus == '+') ? zPositiveOffset : -1 * zPositiveOffset;
110 + }
111 +
112 + private static int parseOffsetHours( String pPart, int pUpTo, String pStringForm )
113 + {
114 + return parseInt( pPart.substring( 0, pUpTo ), "Offset Hours", pStringForm );
115 + }
116 +
117 + private static int parseOffsetMinutes( String pPart, int pFrom, String pStringForm )
118 + {
119 + return parseInt( pPart.substring( pFrom ), "Offset Minutes", pStringForm );
120 + }
121 +
92 122 protected static final StringBuilder tailSQLvalue( TimestampAccessorH pAccessorYMDH, boolean pAddTail, StringBuilder pSB )
93 123 {
94 124 if ( pAddTail )
  @@ -176,7 +206,7 @@
176 206 }
177 207
178 208 /**
179 - * @param pNewMonth != current
209 + * @param pNewHour != current
180 210 */
181 211 protected final T LLsetHour( int pNewHour )
182 212 {