00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <uesqlc/time.hh>
00027
00028
00029
00030
00031
00032
00033 void uesqlc::TTime::set (const char* pkcVALUE)
00034 {
00035
00036 using mpcl::text::TString;
00037 using std::atoi;
00038 using std::size_t;
00039 using std::string;
00040 using std::time_t;
00041
00042
00043 setNull ( !pkcVALUE || !*pkcVALUE );
00044 if ( !isNull() )
00045 {
00046 int iSecond;
00047 int iMinute;
00048 int iHour;
00049 TString yValue (pkcVALUE);
00050 size_t zBegin = 0;
00051 size_t zEnd = 0;
00052
00053
00054
00055
00056 yValue.suppressFirst ('\'');
00057 yValue.suppressLast ('\'');
00058 zEnd = yValue.find (':');
00059 if ( zEnd == string::npos )
00060 {
00061 setNull (true);
00062 throw mpcl::TConstraintException ("invalid date", __FILE__, __LINE__);
00063 }
00064 else
00065 {
00066
00067
00068
00069
00070 iHour = atoi (yValue.substr (0, zEnd).c_str());
00071 zBegin = zEnd + 1;
00072 zEnd = yValue.find (':', zBegin);
00073 if ( zEnd == string::npos )
00074 {
00075 setNull (true);
00076 throw mpcl::TConstraintException ("invalid date", __FILE__, __LINE__);
00077 }
00078 else
00079 {
00080 iMinute = atoi (yValue.substr (zBegin, zEnd - zBegin).c_str());
00081 iSecond = atoi (yValue.substr (zEnd + 1).c_str());
00082 TLocalDate::set (1970, 1, 1, iHour, iMinute, iSecond);
00083 }
00084 }
00085 }
00086
00087
00088 }