COleDateTime.Format() fails when time is '12:00 AM'
Jeff Hare -- jeff@syncinc.com Tuesday, February 18, 1997 Environment: VC++ 4.2b, NT 4.0 Hello, I'm trying to figure out what I'm doing wrong here. I detected no problems installing the 4.2b patch a few months back. When a file timestamp indicates 12:00, AM the decimal portion of DATE seems to be == nnn.0 which causes problems with the results of COleDateTime.Format(). // Gather timestamps from the Object //-------------------------------------- CString ModifyDate = "(Timestamp Unavailable)"; // wGetTimeLastModified() returns a DATE, or a // value of 0.0 if no timestamp is currently // available. // ------------------------------------------- DATE dt = pObj.wGetTimeLastModified(); if(dt != 0.0) { // When files with timestamp of exactly 12:00 AM are // encountered, the decimal portion == ddd.000 here. //-------------------------------------------------- COleDateTime odt(dt); // odt.Format returns a valid Date string, but the // Time string is completely missing when the TIME // portion of dt was == nnn.000 //------------------------------------------------ ModifyDate = odt.Format(); } I may have missed some critical documentation, but I thought I scanned MSDN and the online docs for all the info about COleDateTime and DATE pretty carefully. I also didn't see this in any of the open bug lists I scanned. Thanks for any tips in solving this matter. -Jeff
Jay Nabedian -- jnabedian@qgraph.com Wednesday, February 19, 1997 >Environment: VC++ 4.2b, NT 4.0 > When a file timestamp indicates 12:00, AM the decimal portion of >DATE seems to be == nnn.0 which causes problems with the results of >COleDateTime.Format(). > I may have missed some critical documentation, but I thought I >scanned MSDN and the online docs for all the info about COleDateTime >and DATE pretty carefully. I also didn't see this in any of the >open bug lists I scanned. You're looking too deep. In the online docs for COleDateTime (and in the MSVC++ printed docs, Volume 3, page 1116) it is stated that "By convention, the date 0 (30 December 1899) is used for time-only values. Similarly, the time 0:00 (midnight) is used for date-only values." I find this upsetting as well, but I don't see any way around it. --- /\ /\ /\ / Jay W. Nabedian \/ \/ \/ \/ jnabedian@qgraph.com
Brad Bruce -- BradBruc@ix.netcom.com Wednesday, February 19, 1997 I'm not positive but I believe that midnight is stored when there is only a date entered. The format is trying to handle both date and date/time input. ---------- > From: Jeff Hare> To: mfc-l@netcom.com > Subject: COleDateTime.Format() fails when time is "12:00 AM" > Date: Tuesday, February 18, 1997 12:44 PM > > > Environment: VC++ 4.2b, NT 4.0 > > Hello, > > I'm trying to figure out what I'm doing wrong here. I detected no > problems installing the 4.2b patch a few months back. > > When a file timestamp indicates 12:00, AM the decimal portion of > DATE seems to be == nnn.0 which causes problems with the results of > COleDateTime.Format(). > > > // Gather timestamps from the Object > //-------------------------------------- > CString ModifyDate = "(Timestamp Unavailable)"; > > // wGetTimeLastModified() returns a DATE, or a > // value of 0.0 if no timestamp is currently > // available. > // ------------------------------------------- > DATE dt = pObj.wGetTimeLastModified(); > > if(dt != 0.0) { > > // When files with timestamp of exactly 12:00 AM are > // encountered, the decimal portion == ddd.000 here. > //-------------------------------------------------- > COleDateTime odt(dt); > > // odt.Format returns a valid Date string, but the > // Time string is completely missing when the TIME > // portion of dt was == nnn.000 > //------------------------------------------------ > ModifyDate = odt.Format(); > } > > > I may have missed some critical documentation, but I thought I > scanned MSDN and the online docs for all the info about COleDateTime > and DATE pretty carefully. I also didn't see this in any of the > open bug lists I scanned. > > Thanks for any tips in solving this matter. > > -Jeff
Richard Morris -- richard@softwaremachine.com Tuesday, February 25, 1997 I ran into the same problem when using a COleDateTime stored in a COleVariant, so I do a special test and then reformat the date output for my need. Here is a piece of my code. It might give you some ideas. COleVariant var; //........ var value is retrieved from data source here // then we test for special case if (COleDateTime(var).Format(_T("%m%d%y")) == "12300/") // time only strRet = COleDateTime(var).Format(_T("%X"));//Format(_T("%c")); // Format(_T("%m/%d/%y %H:%M:%S"));//Format(_T("<%m %d %y>")); else strRet = COleDateTime(var).Format(_T("%c")); // Format(_T("%m/%d/%y %H:%M:%S"));//Format(_T("<%m %d %y>")); ; ********************************************* >> When a file timestamp indicates 12:00, AM the decimal portion of >> DATE seems to be == nnn.0 which causes problems with the results of >> COleDateTime.Format(). **************************************************************** Live now. Make now always the most precious time. Now will never come again. - Captain Jean-Luc Picard, U.S.S. Enterprise
Become an MFC-L member | Вернуться в корень Архива |