2014-05-04 2 views
0

Есть ли простой вариант, чтобы преобразовать TDateTime значения США 17 апреля 2014 8:35:38 PM PDT в европейский формат выглядит как 2014-04-17 20 : 35: 38?Преобразовать США TDateTime значения правильно dispay в европейском формате

EDIT:

У меня есть строка, содержащая необработанный дату/время в формате США:

var s, new_s: string; 
begin 
    s := 'Apr 17, 2014 8:35:38 PM PDT'; 

Я хочу, чтобы как-то прочитать/разобрать эту строку в переменную типа TDateTime-или- просто преобразовать его в другую строку нужного формата:

new_s := MyConvertDateTimeSring(s); 
    // now new_s must be '2014-04-17 20:35:38'; 
end; 

(Delphi xe4)

+0

Нет глобального * европейского формата *. Например, мы используем формат, подобный 17.4.2014 20:35:38, в чешском языке. Формат для страны. – TLama

+0

Вы понимаете, что переменная 'TDateTime' на самом деле не находится в * любом из этих форматов, не так ли? Вы можете отформатировать дату, используя нужный строковый формат. –

+2

Ваш вопрос, конечно, как разобрать дату/время * строку * на дату * значение *. –

ответ

1

Если удалить TimeZone PDT из строки, то вы можете использовать VarToDateTime, чтобы преобразовать строку в значение

var 
    LDateTimeStr : string; 
    LDateTime : TDateTime; 
begin 
    LDateTimeStr := 'Apr 17, 2014 8:35:38 PM PDT'; 
    LDateTime := VarToDateTime(Copy(LDateTimeStr, 1, 23)); 
    WriteLn(FormatDateTime('yyyy-mm-dd hh:nn:ss', LDateTime)); 
end; 

TDateTime Результат будет

2014-04-17 20 : 35: 38

+0

Отлично! Большое спасибо. 'VarToDateTime' и' FormatDateTime' будут моим вечерним чтением на сегодня :) Фактически 'LDateTime: = VarToDateTime (Copy (LDateTimeStr, 1, Pos ('PDT', LDateTimeStr));' будет немного более точным, так как может быть 7 апреля, а не 17 апреля. –

+0

Эта часть часового пояса может быть очень важной информацией здесь. – TLama

+0

@TLama Правильно, но это не часть этого вопроса; o) –

Смежные вопросы