Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Преобразование даты в Posix формат   Найти похожие ветки 

 
Квэнди ©   (2006-07-17 14:10) [0]

Здравствуйте. Каким образом можно преобразовать tdatetime в формат Posix:
Mon, 17 Jul 2006 11:26:15 +0400


 
evvcom ©   (2006-07-17 14:32) [1]

Тебе в строку что ли? См. FormatDateTime.


 
Квэнди ©   (2006-07-17 14:33) [2]

Разве сможет  FormatDateTime  привести дату к такому виду ?


 
Квэнди ©   (2006-07-17 14:33) [3]

И если может , то покажите как пожалуйста


 
evvcom ©   (2006-07-17 14:44) [4]

Ну ты хоть F1 нажал? Учись работать со справкой. Не все ж за тебя другие делать будут. Ключевое слово тебе дадено. Будешь пробовать, будут вопросы, приводи, что попробовал, будут и ответы.


 
Квэнди ©   (2006-07-17 14:59) [5]

Уточню:
получается почти все, за исключением:
локаль (нужна eng)
и собственно timezone которго в formatdatetime нету.


 
sniknik ©   (2006-07-17 15:23) [6]

> локаль (нужна eng)
var FS: TFormatSettings;
begin
 GetLocaleFormatSettings($409, FS);
 ....:= FormatDateTime(...., ...., FS);


 
Пусик ©   (2006-07-17 21:15) [7]


> Квэнди ©

Вот здесь читал? -
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/local_time.asp


 
evvcom ©   (2006-07-18 08:29) [8]

А для вычисления timezone используй разницу между GetSystemTime и GetLocalTime. Только определись сначала твоя исходная дата системная или локальная.


 
Шпиён   (2006-07-18 10:11) [9]

Есть одно "НО"
1) решение sniknik ©   (17.07.06 15:23) [6] не для всякой версии
Delphi (в D6 этот вариант не пройдет, в 2006 - все будет ОК)

Вот одно из возможных решений с FormatDateTime для D6 (схематично, в реальном коде неплохо бы сохранять и восстанавливать старые значения). Недостаток - используются глобальные переменные, код не потокобезопасный. Поэтому в D6 и "старше" лучше (imho) все-же не пользоваться FormatDateTime, а собирать строчку "ручками".

function GetTimeZoneBias : integer;
var
 TimeZoneInformation : TTimeZoneInformation;
begin
 if (TIME_ZONE_ID_DAYLIGHT = GetTimeZoneInformation(TimeZoneInformation)) then
   Result := TimeZoneInformation.Bias+TimeZoneInformation.DaylightBias
else
 Result := TimeZoneInformation.Bias;
 end;

procedure TForm1.Button1Click(Sender: TObject);
var
Bias:Integer;
begin
 ShortMonthNames[1] := "Jan";
 ShortMonthNames[2] := "Feb";
 ShortMonthNames[3] := "Mar";
 ShortMonthNames[4] := "Apr";
 ShortMonthNames[5] := "May";
 ShortMonthNames[6] := "Jun";
 ShortMonthNames[7] := "Jul";
 ShortMonthNames[8] := "Aug";
 ShortMonthNames[9] := "Sep";
 ShortMonthNames[10] := "Oct";
 ShortMonthNames[11] := "Nov";
 ShortMonthNames[12] := "Dec";

 ShortDayNames[1] := "Sun";
 ShortDayNames[2] := "Mon";
 ShortDayNames[3] := "Tue";
 ShortDayNames[4] := "Wed";
 ShortDayNames[5] := "Thu";
 ShortDayNames[6] := "Fri";
 ShortDayNames[7] := "Sat";

Label1.Caption:=FormatDateTime("ddd, dd mmm yyyy hh:mm:ss",now);
Bias:=GetTimeZoneBias;
If Bias > 0 then Label1.Caption:=Label1.Caption+ " -"
   else Label1.Caption := Label1.Caption+ " +";
Label1.Caption:=Label1.Caption+Format("%.4d",[abs(ROUND(BIAS / 0.6))]);
end;



 
Шпиён   (2006-07-18 10:55) [10]

Можно, конечно, "заставить" приложение стартовать в английской локали, но  думаю, что это не лучший вариант -)


 
begin...end ©   (2006-07-18 11:45) [11]

> Шпиён   (18.07.06 10:11) [9]

> Поэтому в D6 и "старше" лучше (imho) все-же не пользоваться
> FormatDateTime, а собирать строчку "ручками".

Лучше GetDateFormat/GetTimeFormat использовать. Оно рульно будет.


 
Шпиён   (2006-07-18 11:57) [12]


> begin...end ©   (18.07.06 11:45) [11]

Тоже хороший вариант, о нем я не подумал -), занялся ответом на вопрос

> Квэнди ©   (17.07.06 14:33) [2]
> Разве сможет  FormatDateTime  привести дату к такому виду
> ?


 
umbra ©   (2006-07-18 11:57) [13]


> Недостаток - используются глобальные переменные, код не
> потокобезопасный. Поэтому в D6 и "старше" лучше (imho) все-
> же не пользоваться FormatDateTime, а собирать строчку "ручками".
>

начиная с Д7 есть потокобезопасная версия этой функции



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.07 c
15-1152677702
DimonS
2006-07-12 08:15
2006.08.06
Тут есть электронщики? Или может кто так подскажет?


3-1148930833
Евгений Р.
2006-05-29 23:27
2006.08.06
Нехватка еста для БДЕ


5-1137497165
Anatoly_71
2006-01-17 14:26
2006.08.06
TDateTimePicker заставить выпасть календарь


2-1153373615
TimTimon
2006-07-20 09:33
2006.08.06
Форма


2-1153301090
MixAnOL
2006-07-19 13:24
2006.08.06
Поиск с FindFirst и FindNext