summaryrefslogtreecommitdiff
path: root/tools/source/datetime/datetime.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'tools/source/datetime/datetime.cxx')
-rw-r--r--tools/source/datetime/datetime.cxx18
1 files changed, 8 insertions, 10 deletions
diff --git a/tools/source/datetime/datetime.cxx b/tools/source/datetime/datetime.cxx
index 4027d16fce97..1bf612730bb0 100644
--- a/tools/source/datetime/datetime.cxx
+++ b/tools/source/datetime/datetime.cxx
@@ -181,8 +181,8 @@ DateTime& DateTime::operator +=( double fTimeInDays )
if ( fFrac )
{
Time aTime(0); // default ctor calls system time, we don't need that
- fFrac *= 24UL * 60 * 60 * 1000; // time expressed in milliseconds
- aTime.MakeTimeFromMS( long(fFrac) ); // method handles negative ms
+ fFrac *= ::Time::nanoSecPerDay; // time expressed in nanoseconds
+ aTime.MakeTimeFromNS( static_cast<sal_Int64>(fFrac) ); // method handles negative ns
operator+=( aTime );
}
return *this;
@@ -198,11 +198,11 @@ DateTime operator +( const DateTime& rDateTime, double fTimeInDays )
double operator -( const DateTime& rDateTime1, const DateTime& rDateTime2 )
{
long nDays = (const Date&) rDateTime1 - (const Date&) rDateTime2;
- long nTime = rDateTime1.GetMSFromTime() - rDateTime2.GetMSFromTime();
+ sal_Int64 nTime = rDateTime1.GetNSFromTime() - rDateTime2.GetNSFromTime();
if ( nTime )
{
double fTime = double(nTime);
- fTime /= 24UL * 60 * 60 * 1000; // convert from milliseconds to fraction
+ fTime /= ::Time::nanoSecPerDay; // convert from nanoseconds to fraction
if ( nDays < 0 && fTime > 0.0 )
fTime = 1.0 - fTime;
return double(nDays) + fTime;
@@ -223,10 +223,7 @@ void DateTime::GetWin32FileDateTime( sal_uInt32 & rLower, sal_uInt32 & rUpper )
sal_Int64 aTime =
a100nPerDay * nDays +
- a100nPerSecond * (
- sal_Int64( GetSec() ) +
- 60 * sal_Int64( GetMin() ) +
- 60 * 60 * sal_Int64( GetHour() ) );
+ GetNSFromTime()/100;
rLower = sal_uInt32( aTime % SAL_CONST_UINT64( 0x100000000 ) );
rUpper = sal_uInt32( aTime / SAL_CONST_UINT64( 0x100000000 ) );
@@ -263,8 +260,9 @@ DateTime DateTime::CreateFromWin32FileDateTime( const sal_uInt32 & rLower, const
(sal_uInt16)( nDays + 1 ), nMonths,
sal::static_int_cast< sal_uInt16 >(nYears + 1601) );
Time _aTime( sal_uIntPtr( ( aTime / ( a100nPerSecond * 60 * 60 ) ) % sal_Int64( 24 ) ),
- sal_uIntPtr( ( aTime / ( a100nPerSecond * 60 ) ) % sal_Int64( 60 ) ),
- sal_uIntPtr( ( aTime / ( a100nPerSecond ) ) % sal_Int64( 60 ) ) );
+ sal_uIntPtr( ( aTime / ( a100nPerSecond * 60 ) ) % sal_Int64( 60 ) ),
+ sal_uIntPtr( ( aTime / ( a100nPerSecond ) ) % sal_Int64( 60 ) ),
+ (aTime % a100nPerSecond) * 100 );
return DateTime( _aDate, _aTime );
}