@@ -221,32 +221,51 @@ p.onDataRow = function(msg) {
221221 this . emit ( 'row' , msg ) ;
222222} ;
223223
224+ var dateParser = function ( isoDate ) {
225+ //TODO find some regexp help
226+ //this method works but it's ooglay
227+ var split = isoDate . split ( ' ' ) ;
228+ var date = split [ 0 ] ;
229+ var time = split [ 1 ] ;
230+ var splitDate = date . split ( '-' ) ;
231+ var year = ( splitDate [ 0 ] ) ;
232+ var month = parseInt ( splitDate [ 1 ] ) - 1 ;
233+ var day = ( splitDate [ 2 ] ) ;
234+ var splitTime = time . split ( ':' ) ;
235+ var hour = parseInt ( splitTime [ 0 ] ) ;
236+ var min = splitTime [ 1 ] ;
237+ var end = splitTime [ 2 ] ;
238+ var seconds = / ( \d { 2 } ) / . exec ( end ) ;
239+ seconds = ( seconds ? seconds [ 1 ] : 0 ) ;
240+ var mili = / \. ( \d { 1 , } ) / . exec ( end ) ;
241+ mili = mili ? mili [ 1 ] . slice ( 0 , 3 ) : 0 ;
242+ var tZone = / ( [ Z | + \- ] ) ( \d { 2 } ) ? ( \d { 2 } ) ? / . exec ( end ) ;
243+ //minutes to adjust for timezone
244+ var tzAdjust = 0 ;
245+ if ( tZone ) {
246+ var type = tZone [ 1 ] ;
247+ switch ( type ) {
248+ case 'Z' : break ;
249+ case '-' :
250+ tzAdjust = - ( ( ( parseInt ( tZone [ 2 ] ) * 60 ) + ( parseInt ( tZone [ 3 ] || 0 ) ) ) ) ;
251+ break ;
252+ case '+' :
253+ tzAdjust = ( ( ( parseInt ( tZone [ 2 ] ) * 60 ) + ( parseInt ( tZone [ 3 ] || 0 ) ) ) ) ;
254+ break ;
255+ default :
256+ throw new Error ( "Unidentifed tZone part " + type ) ;
257+ }
258+ }
259+ console . log ( "tzAdjust " + tzAdjust ) ;
260+ var utcOffset = Date . UTC ( year , month , day , hour , min , seconds , mili ) ;
261+ var date = new Date ( utcOffset + ( tzAdjust * 1000 * 60 ) ) ;
224262
225263
226- // var intParser = {
227- // fromDbValue: parseInt
228- // };
229-
230- // var floatParser = {
231- // fromDbValue: parseFloat
232- // };
233-
234- // var timeParser = {
235- // fromDbValue: function(isoTime) {
236- // var when = new Date();
237- // var split = isoTime.split(':');
238- // when.setHours(split[0]);
239- // when.setMinutes(split[1]);
240- // when.setSeconds(split[2].split('-') [0]);
241- // return when;
242- // }
243- // };
244-
245- // var dateParser = {
246- // fromDbValue: function(isoDate) {
247- // return Date.parse(isoDate);
248- // }
249- // };
264+ console . log ( isoDate ) ;
265+ console . log ( date ) ;
266+ console . log ( "" ) ;
267+ return isoDate ;
268+ } ;
250269
251270Client . dataTypeParser = {
252271 20 : parseInt ,
@@ -256,32 +275,14 @@ Client.dataTypeParser = {
256275 1700 : parseFloat ,
257276 700 : parseFloat ,
258277 701 : parseFloat ,
259- 16 : function ( dbVal ) {
278+ 16 : function ( dbVal ) { //boolean
260279 return dbVal === 't' ;
261- }
280+ } ,
262281 // 1083: timeParser,
263282 // 1266: timeParser,
264- // 1114: dateParser,
265- // 1184: dateParser
283+ 1114 : dateParser ,
284+ 1184 : dateParser
266285} ;
267286
268- // p.processRowDescription = function(description) {
269- // this.fields = description.fields;
270- // };
271-
272- // p.processDataRow = function(dataRow) {
273- // var row = dataRow.fields;
274- // var fields = this.fields || [];
275- // var field, dataType;
276- // for(var i = 0, len = row.length; i < len; i++) {
277- // field = fields[i] || 0
278- // var dataType = Client.dataTypes[field.dataTypeID];
279- // if(dataType) {
280- // row[i] = dataType.fromDbValue(row[i]);
281- // }
282- // }
283- // this.emit('row',row);
284- // };
285-
286287//end parsing methods
287288module . exports = Client ;
0 commit comments