Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Внизкол-во времени (Integer), в формат даты Найти похожие ветки
← →
fihi (2006-10-14 14:07) [0]Допустим есть некоторая Integer"овая переменная, которая хранит в себе кол-во секунд, необходимо эти секунды перевести в подобие формата даты. Ну т.е. n-секунд => "1 день, 2 часа, 5 минут и 12 секунд". Как такое осуществить?
← →
Anatoly Podgoretsky © (2006-10-14 14:22) [1]В сутках 86400 секунд
← →
fihi (2006-10-14 14:37) [2]Думал, может у кого валяется готовый код, а то я криворукий такого монстра наворочу, вместо аккуратного кода.
← →
fihi (2006-10-14 17:48) [3]Господа, неужели не нашлось человека который сталкивался с подобной ситуацией, и писал для себя код?
← →
Palladin © (2006-10-14 17:50) [4]10$
← →
sniknik © (2006-10-14 18:12) [5]> 10$
неплохие расценки за одну операцию... ;о))
> Господа, неужели не нашлось человека который сталкивался с подобной ситуацией, и писал для себя код?
господа не "сталкиваются с ситуациями" а просто пишут то что нужно... все что нужно для "написания" сказано в [1]...
p.s. вместо того чтобы выпрашивать код, положил бы свой вариант, ктонибудь наверняка бы исправил, после ктото исправил его и т.д. до оптимума.
был бы форум, обсуждение, а так вопрос - ответ это больше на службу поддержки тянет... скучно и неинтересно. (это обьяснение почему твой вопрос не вызывает энтузиазма... на будущее. пока в нем офтопить куда интереснее)
← →
fihi (2006-10-14 18:39) [6]Вот, что я соамостоятельно сделал, но подозреваю, что совершенно не в том направлении. 99466 - это моё кол-во секунд. И показывает данный код, 1970 + в моих секундах в формате даты. Как сделать достать реальную дату я не знаю.
caption := FormatDateTime("dd/mm/yyyy hh:nn:ss", EncodeDate(1970, 1, 1) + ((99466) / 86400));
← →
Anatoly Podgoretsky © (2006-10-14 18:46) [7]Правильно показывает, 1.01.1970 + чуть более одного дня, а ты от какой даты хочешь отсчитывать, от той и считай. Поскольку количество секунд это не дата, а интервал. И приводить ее к дате можно, как раз именно твоим путем, выбрав правильную начальную дату. Код у тебя правильный, а вот что такое даты ты видимо не понимешь, но не волнуйся, это понимают только несколько человек в мире.
← →
fihi (2006-10-14 18:51) [8]Изначально я подразумевал формат даты не TDateTime, а видимо псевдо дату, мне нужно было вычислить сколько в этих секундах суток, часов, минут, секунд; и записать соответствующим образом.
← →
Anatoly Podgoretsky © (2006-10-14 18:57) [9]Формат TDateTime и понятие дата - это малосвязанные вещи, формат TDateTime это вообще то тривиальный Double
А последний вопрос имеет четкий ответ, если забудешь про понятие дата, это всего лишь простое форматирование, сообственно форматировать надо только первую часть - количество суток - это целое от формата, а остальное стандартной функцией FormatDateTime, достаточно указать нужную маску (параметр Format). Но если и это не подходит, то преобразовывай каждую составляющую с помощью IntToStr
Это хоть и конференция для Начинающих, но задача ниже уровнем.
← →
RASkov (2006-10-14 18:58) [10]> [2] fihi (14.10.06 14:37)
function GetTimeS(const N: Integer): String;
var H, M, S: Integer;
begin
H:=N div 60 div 60;
M:=N div 60 mod 60;
S:=N mod 60;
Result:=Format("%d . %d . %d .", [H, M, S]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetTimeS(86399));
end;
Но это без дней.
← →
Anatoly Podgoretsky © (2006-10-14 19:02) [11]RASkov (14.10.06 18:58) [10]
Бр, а DecodeTime использовать не судьба?
← →
RASkov (2006-10-14 19:05) [12]> [11] Anatoly Podgoretsky © (14.10.06 19:02)
Да какая разница - пусть сам выбирает. DecodeTime - это стандартное, а я ему велосипед без колес:)
← →
RASkov (2006-10-14 20:18) [13]Тем более у DecodeTime первый параметр TDateTime
А автору нужно кол-во сек пересчитать в дни, часы, минуты, сек.
← →
sniknik © (2006-10-14 20:37) [14]> А автору нужно кол-во сек пересчитать в дни, часы, минуты, сек.
он это сделал > 99466 / 86400
← →
RASkov (2006-10-14 20:56) [15]> [14] sniknik © (14.10.06 20:37)
Не знаю что он там сделал
> И показывает данный код, 1970 + в моих секундах в формате
> даты. Как сделать достать реальную дату я не знаю.
> caption := FormatDateTime("dd/mm/yyyy hh:nn:ss", EncodeDate(1970,
> 1, 1) + ((99466) / 86400));
У меня покажит.... да проверить не долго что у меня покажет. Я полностью написал... копируй от сюда и вставляй в редактор кода.
Воощем покажет 23ч. 59м. 59с.
← →
Anatoly Podgoretsky © (2006-10-14 21:13) [16]RASkov (14.10.06 20:18) [13]
Тебя это как то смущает, для подсчета дней другая функция, называется Trunc, конечно не с учетом твоего дурного кода, а с учетом кода автора - он уже разделил на 86400, а большего и не надо!
У тебя еще есть вопросы по начальной математике?
← →
sniknik © (2006-10-14 21:15) [17]> Не знаю что он там сделал
перевел свои секунды в формат дататайм. про отображение вопроса не было, была попытка обьяснить что имеется ввиду под "подобием формата даты".
← →
RASkov (2006-10-15 00:36) [18]> [16] Anatoly Podgoretsky © (14.10.06 21:13)
> [17] sniknik © (14.10.06 21:15)
Спасибо за намеки, но чето все равно не въеду
> мне нужно было вычислить сколько в этих секундах суток,
> часов, минут, секунд; и записать соответствующим образом.
то что я привел кусок кода - никак неотвечает на вопрос?. За исключением суток... но и их можно посчитать
> функция, называется Trunc
и
> есть некоторая Integer"овая переменная
К чему?
Вот пусть автор ченить скажет. А то молчит как рыба.
> конечно не с учетом твоего дурного кода
Может быть - Вам виднее.
← →
RASkov (2006-10-15 00:44) [19]Что Вы к Дате прицепились сказано же - имеются N количества секунд и нужно узнать сколько там (в этом кол-ве секунд) дней, часов, минут, секунд.
И прошу прощения может я и в самом деле тогда не понял вопроса.
← →
sniknik © (2006-10-15 02:11) [20]> узнать сколько там (в этом кол-ве секунд) дней, часов, минут, секунд.
нет, вопрос стоял о переводе в подобие формата даты, перечитай [0] там не сказано о том что нужна строка в формате отображающим дату.
т.е. есть время в секундах, надо перевести в дату... дататайм (зачем подобие если в нормальную проще) потому и "прицепились". причем про отображение, ничего не было, оно видимо только для пояснений тут, на форуме, а полученное значение возможно будут использовать както иначе.
итак зачем какието множественные (и не полные к тому же) операции если все нужное получается одной? которой автор уже решил, ну недо-разобрался чуть чуть..., а ты ему готовый корявый код... пусть бы лучше до-разобрался.
пример (надеюсь он сначала разберется а после сюда заглянет)var
//возьмем секунды с начала включения компа
dt: TDateTime;
i: integer;
begin
i:= GetTickCount() div 1000;//вот оно, готово! сделали преобразование, то о котором вопрос
dt:= i/86400;//ну и отобразить, а то без этого похоже не понятно, но это уже лишнее(!!!)
Caption:= IntToStr(Trunc(dt))+" дней, "+FormatDateTime("hh часов, nn минут и ss секунд", dt);
end;
← →
Anatoly Podgoretsky © (2006-10-15 02:17) [21]RASkov (15.10.06 00:44) [19]
Учись студент.
← →
RASkov (2006-10-15 18:04) [22]Подобие даты.... Понял, Спасибо.
← →
RASkov (2006-10-15 19:42) [23]> [21] Anatoly Podgoretsky © (15.10.06 02:17)
Сами Вы "студент" с усами:)))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c