Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1159821795
Real
2006-10-03 00:43
2006.10.29
Хон-Гиль-Дон


2-1160821158
Sanya_BBB
2006-10-14 14:19
2006.10.29
Как преобразовать double к string ?


15-1160393864
лор
2006-10-09 15:37
2006.10.29
радиовещание


15-1160258215
ProgRAMmer Dimonych
2006-10-08 01:56
2006.10.29
Описание формата Rar 3.x


3-1156904590
Lex_!
2006-08-30 06:23
2006.10.29
DBGrid вставка и удаление полей в RunTime





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский