Revert "Revert "Fix intApp TC failure""
[platform/framework/native/appfw.git] / inc / FBaseDateTime.h
index 9675d18..046faba 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -29,7 +28,6 @@
 #include <FBaseString.h>
 #include <FBaseDouble.h>
 
-
 namespace Tizen { namespace Base
 {
 /**
@@ -38,8 +36,8 @@ namespace Tizen { namespace Base
  *
  *     @since 2.0
  *
- *     The %DateTime class represents dates and times with values ranging from 12:00:00 midnight,
- *     January 1, 1 to 11:59:59 P.M., December 31, 9999 in the Gregorian calendar. It
+ *     The %DateTime class represents dates and times with values ranging from 12:00:00.000 midnight,
+ *     January 1, 1 to 11:59:59.999 P.M., December 31, 9999 in the Gregorian calendar. It
  *     provides methods for conversion between the time formats.
  *
  *     For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/base/datetime_timespan.htm">DateTime and TimeSpan</a>.
@@ -51,7 +49,7 @@ namespace Tizen { namespace Base
  *     #include <FBase.h>
  *
  *     using namespace Tizen::Base;
- *     
+ *
  *     // This method sets both current local time and UTC time.
  *     void
  *     MyClass::DateTimeSample(void)
@@ -106,11 +104,12 @@ public:
         *
         *      @since 2.0
         *
-        *      @param[in]      value   The instance of TimeSpan
+        *      @param[in]      value                           An instance of TimeSpan
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The specified @c value is outside the valid range defined by the method.
+        *                                                                      - The resulting value of %DateTime is greater than the value returned by GetMaxValue().
+     *                                                                 - The resulting value of %DateTime is less than the value returned by GetMinValue().
         */
        result SetValue(const TimeSpan& value);
 
@@ -128,7 +127,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 An error code
+        *      @return         An error code
         *      @param[in]      year                            The year to set
         *      @param[in]      month                           The month to set
         *      @param[in]      day                                     The day to set
@@ -136,21 +135,63 @@ public:
         *      @param[in]      minute                          The minute set
         *      @param[in]      second                          The second to set
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                       Either the arguments are greater than the value returned by GetMaxValue() or
-        *                                                                      are less than the value returned by GetMinValue(), or 
-        *                                                                       the arguments contain invalid values.
-        *                                                                      For example, day is 31 when month is 2.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the arguments is outside the valid range defined by the method.
+        *                                                                      - Either the arguments are greater than the value returned by GetMaxValue() or
+        *                                                                        less than the value returned by GetMinValue().
+        *                                                                      - The arguments contain invalid values,
+        *                                                                        for example, @c day is @c 31 when @c month is @c 2.
         */
        result SetValue(int year, int month, int day, int hour = 0, int minute = 0, int second = 0);
 
        /**
+        *      Sets the current instance of %DateTime to the specified year, month, day, hour, minute, second, and millisecond.
+        *
+        *      @since 2.1
+        *
+        *      @return         An error code
+        *      @param[in]      year                            The year to set
+        *      @param[in]      month                           The month to set
+        *      @param[in]      day                                     The day to set
+        *      @param[in]      hour                            The hour to set
+        *      @param[in]      minute                          The minute set
+        *      @param[in]      second                          The second to set
+        *      @param[in]      millisecond                     The millisecond to set
+        *      @exception      E_SUCCESS                       The method is successful.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the arguments is outside the valid range defined by the method.
+        *                                                                      - Either the arguments are greater than the value returned by GetMaxValue() or
+        *                                                                        less than the value returned by GetMinValue().
+        *                                                                      - The arguments contain invalid values,
+        *                                                                        for example, @c day is @c 31 when @c month is @c 2.
+        */
+       result SetValue(int year, int month, int day, int hour, int minute, int second, int millisecond);
+
+       /**
+        *      Sets the current instance of %DateTime with the specified number of ticks.
+        *      The tick value of type @c long @c long represents dates and times ranging from January 1, 1 A.D. 00:00:00.000 am.
+        *
+        *      @since  2.1
+        *
+        *      @return         An error code
+        *      @param[in]      ticks                           The number of ticks
+        *      @exception      E_SUCCESS                       The method is successful.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the arguments is outside the valid range defined by the method.
+        *                                                                      - Either the arguments are greater than the value returned by GetMaxValue() or
+        *                                                                        less than the value returned by GetMinValue().
+        *                                                                      - The arguments contain invalid values,
+        *                                                                        for example, @c day is @c 31 when @c month is @c 2.
+        */
+       result SetValue(long long ticks);
+
+       /**
         *      Copying of objects using this copy assignment operator is allowed.
         *
         *      @since 2.0
         *
-        *      @return                 A reference to the current object
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         A reference to the current object
+        *      @param[in]      rhs     An instance of %DateTime to copy
         */
        DateTime& operator =(const DateTime& rhs);
 
@@ -159,9 +200,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the current instance is equivalent to the specified instance, @n
-        *               else @c false
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         @c true if the current instance is equivalent to the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator ==(const DateTime& rhs) const;
 
@@ -170,9 +211,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the current instance is not equivalent to the specified instance, @n
-        *           else @c false
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         @c true if the current instance is not equivalent to the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator !=(const DateTime& rhs) const;
 
@@ -181,9 +222,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the value of the current instance is less than the value of the specified instance, @n
-        *                   else @c false
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         @c true if the value of the current instance is less than the value of the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator <(const DateTime& rhs) const;
 
@@ -192,9 +233,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the value of the current instance is greater than the value of the specified instance, @n
-        *                   else @c false
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         @c true if the value of the current instance is greater than the value of the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator >(const DateTime& rhs) const;
 
@@ -203,9 +244,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the value of the current instance is less than or equal to the value of the specified instance, @n
-        *                   else @c false
-        *      @param[in]      rhs             An instance of %DateTime
+        *      @return         @c true if the value of the current instance is less than or equal to the value of the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator <=(const DateTime& rhs) const;
 
@@ -214,9 +255,9 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 @c true if the value of the current instance is greater than or equal to the value of the specified instance, @n
-        *                   else @c false
-        *      @param[in]      rhs     An instance of %DateTime
+        *      @return         @c true if the value of the current instance is greater than or equal to the value of the specified instance, @n
+        *                              else @c false
+        *      @param[in]      rhs     An instance of %DateTime to compare
         */
        bool operator >=(const DateTime& rhs) const;
 
@@ -225,12 +266,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      t                                       The time span to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result Add(const TimeSpan& t);
 
@@ -239,12 +281,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      days                            The number of days to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result AddDays(int days);
 
@@ -253,12 +296,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      hours                           The number of hours to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result AddHours(int hours);
 
@@ -267,12 +311,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      minutes                         The number of minutes to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result AddMinutes(int minutes);
 
@@ -281,12 +326,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      months                          The number of months to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        or less than the value returned by GetMinValue().
         */
        result AddMonths(int months);
 
@@ -295,26 +341,58 @@ public:
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      seconds                         The number of seconds to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result AddSeconds(int seconds);
 
        /**
+        *      Adds the specified number of milliseconds to the instance of %DateTime.
+        *
+        *      @since 2.1
+        *
+        *      @return         An error code
+        *      @param[in]      milliseconds            The number of milliseconds to add
+        *      @exception      E_SUCCESS                       The method is successful.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
+        */
+       result AddMilliseconds(long long milliseconds);
+
+       /**
+        *      Adds the specified number of ticks to the instance of %DateTime.
+        *
+        *      @since 2.1
+        *
+        *      @return         An error code
+        *      @param[in]      ticks                           The number of ticks to add
+        *      @exception      E_SUCCESS                       The method is successful.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
+        */
+       result AddTicks(long long ticks);
+
+       /**
         *      Adds the specified number of years to the instance of %DateTime.
         *
         *      @since 2.0
         *
-        *      @return An error code
+        *      @return         An error code
         *      @param[in]      years                           The number of years to add
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result AddYears(int years);
 
@@ -324,11 +402,11 @@ public:
         *
         *      @since 2.0
         *
-        *  @return                     A 32-bit @c signed integer value
+        *  @return             The 32-bit @c signed integer value
         *      @code
-        *      <  0  if the value of @c dt1 is less than the value of @c dt2
-        *      == 0  if the value of @c dt1 is equal to the value of @c dt2
-        *      >  0  if the value of @c dt1 is greater than the value of @c dt2
+        *      <  0  if the value of dt1 is less than the value of dt2
+        *      == 0  if the value of dt1 is equal to the value of dt2
+        *      >  0  if the value of dt1 is greater than the value of dt2
         *      @endcode
         *      @param[in]      dt1     An instance of %DateTime
         *      @param[in]      dt2     An instance of %DateTime
@@ -340,13 +418,13 @@ public:
         *
         *      @since 2.0
         *
-        *  @return                     A 32-bit @c signed integer value
+        *  @return             The 32-bit @c signed integer value
         *      @code
         *      <  0  if the value of the current instance is less than value of the specified instance
         *      == 0  if the value of the current instance is equal to value of the specified instance
         *      >  0  if the value of the current instance is greater than value of the specified instance
         *      @endcode
-        *      @param[in]              value   An instance of %DateTime
+        *      @param[in]      value   An instance of %DateTime
         */
        int CompareTo(const DateTime& value) const;
 
@@ -356,9 +434,9 @@ public:
         *      @since 2.0
         *
         *      @return         @c true if the specified instance of Object is equivalent to the current instance of %DateTime, @n
-                       else @c false
+        *                              else @c false
         *      @param[in]      obj The object to compare with the current instance of %DateTime
-        *      @see                    Tizen::Base::Object::GetHashCode()
+        *      @see            Tizen::Base::Object::GetHashCode()
         */
        virtual bool Equals(const Object& obj) const;
 
@@ -387,13 +465,14 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 An error code
+        *      @return         An error code
         *      @param[in]      year                            The year
         *      @param[in]      month                           The month
         *      @param[out]     days                            The number of days
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                       @c year must be a value between @c 1 and @c 9999 and @c month must be a value between @c 1 and @c 12.
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - The specified @c year must be a value between @c 1 and @c 9999 and @c month must be a value between @c 1 and @c 12.
         */
        static result GetDaysInMonth(int year, int month, int& days);
 
@@ -402,12 +481,13 @@ public:
         *
         *      @since 2.0
         *
-        *      @return                 An error code
-        *      @param[in]      t                                       The time span to deduct
+        *      @return         An error code
+        *      @param[in]      t                                       The time span to subtract
         *      @exception      E_SUCCESS                       The method is successful.
-        *      @exception      E_OUT_OF_RANGE          The value of the argument is outside the valid range defined by the method. @n
-        *                                                                      The resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
-        *                                                                      is less than the value returned by GetMinValue().
+        *      @exception      E_OUT_OF_RANGE          Either of the following conditions has occurred:
+        *                                                                      - The value of the argument is outside the valid range defined by the method.
+        *                                                                      - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue() or @n
+        *                                                                        less than the value returned by GetMinValue().
         */
        result Subtract(const TimeSpan& t);
 
@@ -416,9 +496,10 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         A string containing Unicode representation of the value of the current instance of %DateTime
-        *      @remarks        The format of the String representation is "mm/dd/yyyy hh:mm:ss".
-        *      @remarks        Use the Tizen::Locale namespace for a string of the locale-specific representation.
+        *      @return         The string that contains the Unicode representation of the value of the current instance of %DateTime
+        *      @remarks
+        *                              - The format of the String representation is "mm/dd/yyyy hh:mm:ss".
+        *                              - Use the Tizen::Locale namespace for a string of the locale-specific representation.
         *
         */
        String ToString(void) const;
@@ -429,16 +510,19 @@ public:
         * @since 2.0
         *
         * @return              An error code
-        * @param[in]   str             A String representation of a date and time value
-        * @param[out]  dt              The result of the method
+        * @param[in]   str                                             The String representation of the date and time value
+        * @param[out]  dt                                              The result of the method
         * @exception   E_SUCCESS                               The method is successful.
         * @exception   E_INVALID_FORMAT                The specified string is in an invalid format.
-        * @exception   E_OUT_OF_RANGE                  The specified string contains an invalid value. @n
-        *                                                                           1) The resulting value of %DateTime is greater than the value returned by GetMaxValue()
-        *                                                                          or is less than the value returned by GetMinValue(). @n
-        *                                                                           2) The specified string contains an invalid value.
-        *                                                                          For example, day is 31 when the month is 2.
-        * @remarks             The format of the string is "mm/dd/yyyy hh:mm:ss".
+        * @exception   E_OUT_OF_RANGE                  Either of the following conditions has occurred:
+        *                                                                              - The specified string contains an invalid value.
+        *                                                                              - Either the resulting value of %DateTime is greater than the value returned by GetMaxValue()
+        *                                                                                or less than the value returned by GetMinValue().
+        *                                                                              - The specified string contains an invalid value,
+        *                                                                                for example, @c day is @c 31 when the @c month is @c 2.
+        * @remarks
+        *                              - The format of the string is "mm/dd/yyyy hh:mm:ss".
+        *                              - This method guarantees that the original value of the out-parameter is not changed when the method returns an error.
         */
        static result Parse(const String& str, DateTime& dt);
 
@@ -447,7 +531,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return  An integer value indicating the year of the current instance of %DateTime
+        *      @return         The integer value that indicates the year of the current instance of %DateTime
         */
        int GetYear(void) const;
 
@@ -456,7 +540,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         An integer value indicating the month of the current instance of %DateTime
+        *      @return         The integer value that indicates the month of the current instance of %DateTime
         */
        int GetMonth(void) const;
 
@@ -465,7 +549,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         An integer value indicating the day of the current instance of %DateTime
+        *      @return         The integer value that indicates the day of the current instance of %DateTime
         */
        int GetDay(void) const;
 
@@ -474,7 +558,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         An integer value indicating the hour of the current instance of %DateTime
+        *      @return         The integer value that indicates the hour of the current instance of %DateTime
         */
        int GetHour(void) const;
 
@@ -483,7 +567,7 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         An integer value indicating the minute of the current instance of %DateTime
+        *      @return         The integer value that indicates the minute of the current instance of %DateTime
         */
        int GetMinute(void) const;
 
@@ -492,11 +576,39 @@ public:
         *
         *      @since 2.0
         *
-        *      @return         An integer value indicating the second of the current instance of %DateTime
+        *      @return         The integer value that indicates the second of the current instance of %DateTime
         */
        int GetSecond(void) const;
 
        /**
+        *      Gets the millisecond of the current instance of %DateTime.
+        *
+        *      @since  2.1
+        *
+        *      @return         The integer value that indicates the millisecond of the current instance of %DateTime
+        */
+       int GetMillisecond(void) const;
+
+       /**
+        *      Gets the number of ticks in one second.
+        *
+        *      @since  2.1
+        *
+        *      @return         The number of ticks in one second.
+        */
+       static int GetTicksPerSecond(void);
+
+       /**
+        *      Gets the tick of the current instance of %DateTime.
+        *      The tick value of type @c long @c long represents dates and times ranging from January 1, 1 A.D. 00:00:00.000 am.
+        *
+        *      @since  2.1
+        *
+        *      @return         The @c long @c long value that indicates the tick of the current instance of %DateTime
+        */
+       long long GetTicks(void) const;
+
+       /**
         *      Gets the number of milliseconds (in TimeSpan) since the minimum date (GetMinValue()).
         *
         *      @since 2.0
@@ -507,7 +619,7 @@ public:
        TimeSpan GetTime(void) const;
 
        /**
-        *      Gets the maximum allowable value of %DateTime (that is, "December 31 9999 23:59:59").
+        *      Gets the maximum allowable value of %DateTime (that is, "December 31 9999 23:59:59.999").
         *
         *      @since 2.0
         *
@@ -516,7 +628,7 @@ public:
        static const DateTime& GetMaxValue(void);
 
        /**
-        *      Gets the minimum allowable value of %DateTime (that is, "January 1 1 00:00:00").
+        *      Gets the minimum allowable value of %DateTime (that is, "January 1 1 00:00:00.000").
         *
         *      @since 2.0
         *
@@ -530,7 +642,7 @@ public:
         *      @since 2.0
         *
         *      @return         @c true if the year represented by the current instance of %DateTime is a leap year, @n
-        *               else @c false
+        *                              else @c false
         */
        bool IsLeapYear(void) const;
 
@@ -540,24 +652,22 @@ public:
         *      @since 2.0
         *
         *      @return         @c true if the specified year is a leap year, @n
-        *               else @c false
+        *                              else @c false
         *      @param[in]      year    The year
         */
        static bool IsLeapYear(int year);
 
-
 private:
-       DateTime(int year, int month, int day, int hour, int minute, int second);
+       DateTime(int year, int month, int day, int hour, int minute, int second, int tick);
 
        int CountLeapYear(int year) const
        {
-               return (int) ((year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400);
-
+               return static_cast< int >((year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400);
        }
 
        int CountDays(int year) const
        {
-               return (int) ((year - 1) * 365 + CountLeapYear(year));
+               return static_cast< int >((year - 1) * 365 + CountLeapYear(year));
        }
 
        int CountYears(int day) const
@@ -572,31 +682,50 @@ private:
                }
                else
                {
-                       return(year != (int) year ? 1 + (int) year : (int) year);
+                       year = (year != static_cast< int >(year) ? 1 + static_cast< int >(year) : static_cast< int >(year));
+                       int tempDays = day - CountDays(year);
+
+                       // Check the boundary of days
+                       if (IsLeapYear(year))
+                       {
+                               if (tempDays > 366)
+                               {
+                                       year += 1;
+                               }
+                       }
+                       else
+                       {
+                               if (tempDays > 365)
+                               {
+                                       year += 1;
+                               }
+                       }
+
+                       return year;
                }
        }
 
        typedef struct
        {
-               int year;       /**<The year (1 ~ 9999)*/
-               int month;      /**<The month (-12)*/
+               int year;       /**<The year (1-9999)*/
+               int month;      /**<The month (1-12)*/
                int day;        /**<The day (1-31)*/
                int hour;       /**<The hour (0-23)*/
                int minute;     /**<The minute (0-59)*/
-               int second;     /**<The second (0-59)*/
+               int second;     /**<The first 16 bits store tick (0-999) and the last 16 bits store second (0-59)*/
        } TmDateTime;
 
+       result ConvertTicksToDate(long long ticks, TmDateTime* pDateTime);
+       long long ConvertDateToTicks(const TmDateTime* pDateTime) const;
+
        result ConvertSecondsToDate(long long seconds, TmDateTime* pDateTime);
        long long ConvertDateToSeconds(const TmDateTime* pDateTime) const;
 
        TmDateTime __dateTime;
 
-
        friend class _DateTimeImpl;
-       class _DateTimeImpl * __pDateTimeImpl;
+       class _DateTimeImpl* __pDateTimeImpl;
 
 }; // DateTime
-
 }}  // Tizen::Base
-
 #endif // _FBASE_DATE_TIME_H_