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; 
 | 
  *] 
 | 
} 
 |