Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/tools/source/datetime/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 2 kB image not shown  

Quelle  datetimeutils.cxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


#include <tools/datetimeutils.hxx>
#include <rtl/strbuf.hxx>
#include <rtl/ustrbuf.hxx>


/// Append the number as 2-digit when less than 10.
template<class TStringBuffer>
static void lcl_AppendTwoDigits( TStringBuffer &rBuffer, sal_Int32 nNum )
{
    if ( nNum < 0 || nNum > 99 )
    {
        rBuffer.append( "00" );
        return;
    }

    if ( nNum < 10 )
        rBuffer.append( '0' );

    rBuffer.append( nNum );
}

template<class TString, class TStringBuffer>
static TString DateTimeToStringImpl( const DateTime& rDateTime )
{
    const DateTime& aInUTC( rDateTime );
// HACK: this is correct according to the spec, but MSOffice believes everybody lives
// in UTC+0 when reading it back
//    aInUTC.ConvertToUTC();

    TStringBuffer aBuffer( 25 );
    aBuffer.append( sal_Int32( aInUTC.GetYear() ) );
    aBuffer.append( '-' );

    lcl_AppendTwoDigits( aBuffer, aInUTC.GetMonth() );
    aBuffer.append( '-' );

    lcl_AppendTwoDigits( aBuffer, aInUTC.GetDay() );
    aBuffer.append( 'T' );

    lcl_AppendTwoDigits( aBuffer, aInUTC.GetHour() );
    aBuffer.append( ':' );

    lcl_AppendTwoDigits( aBuffer, aInUTC.GetMin() );
    aBuffer.append( ':' );

    lcl_AppendTwoDigits( aBuffer, aInUTC.GetSec() );
    aBuffer.append( 'Z' ); // we are in UTC

    return aBuffer.makeStringAndClear();
}

OString DateTimeToOString( const DateTime& rDateTime )
{
    return DateTimeToStringImpl<OString,OStringBuffer>(rDateTime);
}

OUString DateTimeToOUString( const DateTime& rDateTime )
{
    return DateTimeToStringImpl<OUString,OUStringBuffer>(rDateTime);
}

OString DateToOString( const Date& rDate )
{
    tools::Time aTime( tools::Time::EMPTY );
    return DateTimeToOString( DateTime( rDate, aTime ) );
}

OUString DateToDDMMYYYYOUString( const Date& rDate )
{
    OUStringBuffer aBuffer( 25 );
    lcl_AppendTwoDigits( aBuffer, rDate.GetDay() );
    aBuffer.append( '/' );

    lcl_AppendTwoDigits( aBuffer, rDate.GetMonth() );
    aBuffer.append( '/' );

    aBuffer.append( sal_Int32( rDate.GetYear() ) );

    return aBuffer.makeStringAndClear();
}

std::ostream& operator<<(std::ostream& os, const Date& rDate)
{
    os << rDate.GetYear() << "-" << rDate.GetMonth() << "-" << rDate.GetDay();
    return os;
}

Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.