Quintiq file version 2.0 #parent: #root Method PTF_ConvertDateTimeStringToSelectedClientTimezone ( String datetimeString ) as String id:Method_LibPTF_pnlTestController_PTF_ConvertDateTimeStringToSelectedClientTimezone { #keys: '[131464.1.896623008]' Body: [* /* Convert a DateTime that was formatted into a String to another DateTime String based on selected timezone 1. Append timezone offset into datetimeString 2. Convert string in (1) to datetime (This will be the time as it is but with timezoe offset info) 3. Convert datetime in (2) to string based on selected client timezone */ // The "Z" indicates timezone offset is appended in the datatime. Example +0800 timezoneOffsetMask := "Z"; dateTimeFormatWithTimezoneOffset := this.PTF_GetPTFGlobalParameters().DefaultDateFormat() + timezoneOffsetMask; // 1. lblClientTimezoneOff stores timezone offset value, example: +0800 datetimeStringWithTimeZoneOffset := datetimeString + lblClientTimezoneOffset.Text(); // 2. Convert string in (1) to datetime (This will be the time as it is but with timezoe offset info) stringToDateTimeConverter := StringToDateTime::StandardConverter(); stringToDateTimeConverter.SetCustomConversion(); stringToDateTimeConverter.CustomFormatString( dateTimeFormatWithTimezoneOffset ); dateTimeInCurrentTimezone := stringToDateTimeConverter.Convert( datetimeStringWithTimeZoneOffset ); // 3. Convert datetime in current timezone to string based on selected client timezone dateTimeToStringConverter := DateTimeToString::UserConverter(); dateTimeToStringConverter.SetCustomConversion(); dateTimeToStringConverter.CustomFormatString( dateTimeFormatWithTimezoneOffset ); strDateTimeInSelectedTimezone := dateTimeToStringConverter.Convert( dateTimeInCurrentTimezone ); // Just extract the date time part, ignore the timezone offset part startIndex := 0; timezoneOffsetLength := 5; convertedDatTimeString := strDateTimeInSelectedTimezone.SubString( startIndex, strDateTimeInSelectedTimezone.Length() - timezoneOffsetLength ); return convertedDatTimeString; *] }