57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright (c) Microsoft Corporation. All rights reserved.
 | 
						|
// Licensed under the MIT License.
 | 
						|
 | 
						|
#include "pch.h"
 | 
						|
 | 
						|
namespace DateCalculationUnitTests
 | 
						|
{
 | 
						|
    /** Date Utils **/
 | 
						|
    class DateUtils
 | 
						|
    {
 | 
						|
    public:
 | 
						|
        // Converts SYSTEMTIME structure to DateTime value
 | 
						|
        // Converts: SYSTEMTIME -> FILETIME -> DateTime
 | 
						|
        static Windows::Foundation::DateTime SystemTimeToDateTime(SYSTEMTIME systemTime)
 | 
						|
        {
 | 
						|
            LPFILETIME lpFileTime = new FILETIME();
 | 
						|
            SystemTimeToFileTime(&systemTime, lpFileTime);
 | 
						|
 | 
						|
            Windows::Foundation::DateTime dateTime;
 | 
						|
            dateTime.UniversalTime = (DWORD)lpFileTime->dwHighDateTime;
 | 
						|
            dateTime.UniversalTime <<= 32;
 | 
						|
            dateTime.UniversalTime |= (DWORD)lpFileTime->dwLowDateTime;
 | 
						|
 | 
						|
            return dateTime;
 | 
						|
        }
 | 
						|
 | 
						|
        // Converts DateTime value to SYSTEMTIME structure
 | 
						|
        // Converts: DateTime -> FILETIME -> SYSTEMTIME
 | 
						|
        static SYSTEMTIME DateTimeToSystemTime(Windows::Foundation::DateTime dateTime)
 | 
						|
        {
 | 
						|
            FILETIME fileTime;
 | 
						|
            fileTime.dwLowDateTime = (DWORD)(dateTime.UniversalTime & 0xffffffff);
 | 
						|
            fileTime.dwHighDateTime = (DWORD)(dateTime.UniversalTime >> 32);
 | 
						|
 | 
						|
            SYSTEMTIME systemTime;
 | 
						|
            FileTimeToSystemTime(&fileTime, &systemTime);
 | 
						|
 | 
						|
            return systemTime;
 | 
						|
        }
 | 
						|
 | 
						|
        // Returns long date format for a date
 | 
						|
        static Platform::String^ GetLongDate(SYSTEMTIME systemTime)
 | 
						|
        {
 | 
						|
            auto formatter = ref new Windows::Globalization::DateTimeFormatting::DateTimeFormatter(
 | 
						|
                L"longdate",
 | 
						|
                Windows::Globalization::ApplicationLanguages::Languages,
 | 
						|
                Windows::System::UserProfile::GlobalizationPreferences::HomeGeographicRegion,
 | 
						|
                Windows::Globalization::CalendarIdentifiers::Gregorian,
 | 
						|
                Windows::Globalization::ClockIdentifiers::TwentyFourHour);
 | 
						|
 | 
						|
            Windows::Foundation::DateTime dateTime = SystemTimeToDateTime(systemTime);
 | 
						|
            return formatter->Format(dateTime);
 | 
						|
        }
 | 
						|
    };
 | 
						|
}
 | 
						|
 |