Returns {\tt true} if the object represents a valid time moment.
+\membersection{wxDateTime::GetDateOnly}\label{wxdatetimegetdateonly}
+
+\constfunc{wxDateTime}{GetDateOnly}{\void}
+
+Returns the object having the same date component as this one but time of
+00:00:00.
+
+\newsince{2.8.2}
+
+\wxheading{See also}
+
+\helpref{ResetTime}{wxdatetimeresettime}
+
+
\membersection{wxDateTime::GetTm}\label{wxdatetimegettm}
\constfunc{Tm}{GetTm}{\param{const TimeZone\& }{tz = Local}}
// resets time to 00:00:00, doesn't change the date
wxDateTime& ResetTime();
+#if wxABI_VERSION >= 20802
+ // get the date part of this object only, i.e. the object which has the
+ // same date as this one but time of 00:00:00
+ wxDateTime GetDateOnly() const;
+#endif // wxABI 2.8.1+
+
// the following functions don't change the values of the other
// fields, i.e. SetMinute() won't change either hour or seconds value
return *this;
}
+wxDateTime wxDateTime::GetDateOnly() const
+{
+ Tm tm = GetTm();
+ tm.msec =
+ tm.sec =
+ tm.min =
+ tm.hour = 0;
+ return wxDateTime(tm);
+}
+
// ----------------------------------------------------------------------------
// DOS Date and Time Format functions
// ----------------------------------------------------------------------------
CPPUNIT_TEST( TestDateParse );
CPPUNIT_TEST( TestTimeArithmetics );
CPPUNIT_TEST( TestDSTBug );
+ CPPUNIT_TEST( TestDateOnly );
CPPUNIT_TEST_SUITE_END();
void TestLeapYears();
void TestDateParse();
void TestTimeArithmetics();
void TestDSTBug();
+ void TestDateOnly();
DECLARE_NO_COPY_CLASS(DateTimeTestCase)
};
#endif // CHANGE_SYSTEM_DATE
}
+void DateTimeTestCase::TestDateOnly()
+{
+ wxDateTime dt(19, wxDateTime::Jan, 2007, 15, 01, 00);
+
+ static const wxDateTime::wxDateTime_t DATE_ZERO = 0;
+ CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetHour() );
+ CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetMinute() );
+ CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetSecond() );
+ CPPUNIT_ASSERT_EQUAL( DATE_ZERO, dt.GetDateOnly().GetMillisecond() );
+
+ dt.ResetTime();
+ CPPUNIT_ASSERT_EQUAL( wxDateTime(19, wxDateTime::Jan, 2007), dt );
+
+ CPPUNIT_ASSERT_EQUAL( wxDateTime::Today(), wxDateTime::Now().GetDateOnly() );
+}
+
#endif // wxUSE_DATETIME