3569_ogr_datetime_fix.patch

jekhor -, 2011-03-08 07:35 AM

Download (1.74 KB)

View differences:

providers/ogr/qgsogrprovider.cpp (working copy)
35 35
#include <QMap>
36 36
#include <QString>
37 37
#include <QTextCodec>
38
#include <QDateTime>
38 39

  
39 40
#include "qgsapplication.h"
40 41
#include "qgsdataprovider.h"
......
391 392
      {
392 393
        case OFTInteger: varType = QVariant::Int; break;
393 394
        case OFTReal: varType = QVariant::Double; break;
394
          // unsupported in OGR 1.3
395
          //case OFTDateTime: varType = QVariant::DateTime; break;
396 395
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1400
396
        case OFTDateTime: varType = QVariant::DateTime; break;
397 397
        case OFTString: varType = QVariant::String; break;
398 398
#endif
399 399
        default: varType = QVariant::String; // other unsupported, leave it as a string
......
730 730
      case QVariant::String: value = QVariant( mEncoding->toUnicode( OGR_F_GetFieldAsString( ogrFet, attindex ) ) ); break;
731 731
      case QVariant::Int: value = QVariant( OGR_F_GetFieldAsInteger( ogrFet, attindex ) ); break;
732 732
      case QVariant::Double: value = QVariant( OGR_F_GetFieldAsDouble( ogrFet, attindex ) ); break;
733
        //case QVariant::DateTime: value = QVariant(QDateTime::fromString(str)); break;
733
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1400
734
      case QVariant::DateTime:
735
	int year, month, day, hour, minute, second, tz;
736

  
737
        OGR_F_GetFieldAsDateTime( ogrFet, attindex, &year, &month, &day, &hour, &minute, &second, &tz );
738
        value = QVariant(QDateTime( QDate( year, month, day ), QTime( hour, minute, second )));
739
        break;
740
#endif
734 741
      default: assert( NULL && "unsupported field type" );
735 742
    }
736 743
  }