Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Преобразование даты в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1153480715
RomanH
2006-07-21 15:18
2006.08.06
Массив переменной длинны


2-1153027857
GelVit
2006-07-16 09:30
2006.08.06
ComboBox&TPenStyle


6-1139059311
Get_
2006-02-04 16:21
2006.08.06
TIdTelnetServer, помогите избавится от ошибок


15-1152723465
Petr V. Abramov
2006-07-12 20:57
2006.08.06
беспредел


2-1152808926
Drug1985
2006-07-13 20:42
2006.08.06
Непонятная ошибка. Объясните кто понимает...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский