Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизПеревод секунд Найти похожие ветки
← →
ГореПрограммер (2006-09-22 18:17) [0]Здравствуйте.
У меня есть некое кол- во секунд, можно ли эту цифру быстро каким- нибудь образом перевести в строку вида: 0h12m32s для примера ? и если можно то как ?
← →
Palladin © (2006-09-22 18:22) [1]начальная школа, деление/вычитание, и знаниче сколько чего в чем...
← →
ГореПрограммер (2006-09-22 18:27) [2]ясно, то есть функции такой нет, ок.
← →
Ega23 © (2006-09-22 18:27) [3]
function SecondsToStr(const Value:Integer):String;
var
h, m, s : Integer
begin
h:=Value div 3600;
m:=(Value mod 3600) div 60;
s:=Value mod 60;
Result:=IntToStr(h)+"h"+IntToStr(m)+"m"+IntToStr(s)+"s";
end;
← →
Правильный Вася (2006-09-22 18:28) [4]http://delphimaster.net/view/2-1158926772/
гы
← →
Ega23 © (2006-09-22 18:28) [5]
> начальная школа, деление/вычитание, и знаниче сколько чего
> в чем...
вычитание и не нужно... :о)
← →
Palladin © (2006-09-22 18:36) [6]как енто не нужно... очень даже нужно... если пользоваться делением... :)
ну а div mod то кнечно не нужно...
← →
ГореПрограммер (2006-09-22 19:10) [7]Тогда второй тупой вопрос...
как перевести tdate в секунды ?
← →
Desdechado © (2006-09-22 20:48) [8]секундами меряются интервалы времени
а TDate - это не интервал, это точка на оси времени, дата то есть
← →
Mike Petrichenko (2006-09-22 21:59) [9]
> Desdechado © (22.09.06 20:48) [8]
> секундами меряются интервалы времени
> а TDate - это не интервал, это точка на оси времени, дата
> то есть
Ошибочка! Это интервал! Чтим Маркса:
TDate represents a special type of TDateTime value that has no decimal part. A TDate value represents the number of days that have elapsed since 12/30/1899.
Так что в секунды перевести можно :)
← →
Mike Petrichenko (2006-09-22 22:10) [10]
> Desdechado © (22.09.06 20:48) [8]
> секундами меряются интервалы времени
> а TDate - это не интервал, это точка на оси времени, дата
> то есть
Да и еще замечание. Любая дана (не в представлении TDate) есть интервал. В нащем случае от Рождества Христова. Опять же, можно перевести в секунды :)
← →
Desdechado © (2006-09-22 22:52) [11]> Любая дата есть интервал
Если такой умник, переведи в секунды дату 150 лет до РХ.
Еще раз - не путайте точку на оси с ее расстоянием от чего-то (в т.ч. и от начала отсчета). Потому как место отсчета расстояния можно менять, но величина (позиция) этой точки не изменится.
← →
SergP © (2006-09-22 23:36) [12]> [10] Mike Petrichenko (22.09.06 22:10)
>
> > Desdechado © (22.09.06 20:48) [8]
> > секундами меряются интервалы времени
> > а TDate - это не интервал, это точка на оси времени, дата
>
> > то есть
>
> Да и еще замечание. Любая дана (не в представлении TDate)
> есть интервал. В нащем случае от Рождества Христова. Опять
> же, можно перевести в секунды :)
ты сам сказал, что:
> TDate represents a special type of TDateTime value that
> has no decimal part. A TDate value represents the number
> of days that have elapsed since 12/30/1899.
и
> Да и еще замечание. Любая дана (не в представлении TDate)
> есть интервал. В нащем случае от Рождества Христова. Опять
> же, можно перевести в секунды :)
Это уже 2 точки отсчета... А количество секунд от какой точки автор не уточнил. Кроме того вдруг ему нужна вообще какая-то левая точка отсчета.
так что Desdechado прав.
← →
Mike Petrichenko (2006-09-23 01:08) [13]
> Это уже 2 точки отсчета... А количество секунд от какой
> точки автор не уточнил. Кроме того вдруг ему нужна вообще
> какая-то левая точка отсчета.
Опять ошибочка. Одна точка отчета. Чтим внимательно посты. И исходный вопрос.
> Если такой умник, переведи в секунды дату 150 лет до РХ.
>
>
> Еще раз - не путайте точку на оси с ее расстоянием от чего-
> то (в т.ч. и от начала отсчета). Потому как место отсчета
> расстояния можно менять, но величина (позиция) этой точки
> не изменится.
~ -(60 * 60 * 24 * 365 * 150)
Не путайте житейское понятие о дате и времени с понятием сего в, ну скажем, тойже Delphi.
А вот как перевести дату TDate в секунды:
var
ADate: TDate;
begin
ASec := ADate * 60 * 60 * 24;
А если автор имел в виду, что как получить количество секунд (а не ПЕРЕВЕСТИ в секунды), то для TDate сее значение всегда 0. А для TDateTime - дробная часть:
"he fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed."
Да. И еще вот из Маркса:
"When working with negative TDateTime values, computations must handle time portion separately. The fractional part reflects the fraction of a 24-hour day without regard to the sign of the TDateTime value. For example, 6:00 am on 12/29/1899 is –1.25, not –1 + 0.25, which would be –0.75. There are no TDateTime values between –1 and 0."
← →
isasa © (2006-09-23 01:42) [14]
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
i:=60; // Одна минута
memo1.Lines.Add(FormatDateTime("hh"h"mm"m"ss"sec"", i/86400));
end;
← →
SergP © (2006-09-23 01:43) [15]> А если автор имел в виду, что как получить количество секунд
> (а не ПЕРЕВЕСТИ в секунды), то для TDate сее значение всегда
> 0. А для TDateTime - дробная часть:
Хм... С чего это Вы взяли?
Вот посмотрите в controls.pas:
...
TDate = type TDateTime;
...
> Не путайте житейское понятие о дате и времени с понятием
> сего в, ну скажем, тойже Delphi.
Дело не в том путаю я что-то или нет. Дело в том что я не знаю какое понятие об этом у вопрошающего... Житейское, Дельфийское или еще какое-то? А он нам об этом не поведал...
← →
isasa © (2006-09-23 01:47) [16]Если лидирующих нулей не надо, то
strTime:=FormatDateTime("h"h"m"m"s"sec"", i/86400);
← →
isasa © (2006-09-23 01:50) [17]Не надо в пятницу, вечером, так сложно.
Целые - дни, 1/86400 - секунда, 86400/86400 - сутки - 24 часа. :)
← →
Mike Petrichenko (2006-09-23 02:05) [18]
> Дело не в том путаю я что-то или нет. Дело в том что я не
> знаю какое понятие об этом у вопрошающего... Житейское,
> Дельфийское или еще какое-то? А он нам об этом не поведал.
> ..
Вот:
> Тогда второй тупой вопрос...
> как перевести tdate в секунды ?
Что тут двусмысленного? Конкретный тип. Конкретно описан в справке. Конкретно, там же, в справке, задана точка отсчета.
← →
Германн © (2006-09-23 02:08) [19]О сколько нам ещё трёпа чудного преподнесёт форума ДМ дух!
Извиняюсь перед автором, чью строку я так "беспардонно" опохабил. :-(
← →
isasa © (2006-09-23 02:20) [20]Зачем переводить?
unit System;
...
TDateTime = type Double;
unit Controls;
...
TTime = type TDateTime;
← →
Mike Petrichenko (2006-09-23 02:23) [21]
> О сколько нам ещё трёпа чудного преподнесёт форума ДМ дух!
>
> Извиняюсь перед автором, чью строку я так "беспардонно"
> опохабил. :-(
Чем бы дитя не тешилось, лишь бы не вешалось :)
← →
Desdechado © (2006-09-23 13:23) [22]Mike Petrichenko (23.09.06 02:05) [18]
> Что тут двусмысленного?
Двусмысленность в том, что в [0] звучало так "У меня есть некое кол- во секунд" (явно длина интервала), а в [7] уже так "как перевести tdate в секунды" (а это точка на оси времени). О чем я и говорил "не путайте".
И именно поэтому дата может быть отрицательной, а длина интервала между 2 датами - никогда.
И никакого иного понимания (житейского или программистского) тут быть не может. Есть ось, есть точки на ней и расстояния между ними.
Так вот - точка традиционно маркируется числом, равным расстоянию от некоторого начала отсчета (другой точки). Но стаким же успехом она может маркироваться 2 числами (от РХ или 1899 г) или 100 числами. Сама точка от этого никак не изменится.
Поэтому еще раз: длина и номер - суть разные вещи, как вес и масса.
← →
Плохиш © (2006-09-23 16:13) [23]
> ГореПрограммер (22.09.06 19:10) [7]
> Тогда второй тупой вопрос...
> как перевести tdate в секунды ?
Тогда ответ для тупых идиотов: надо умножить значение на количество секунд в сутках.
← →
Горе программер (2006-09-23 18:52) [24]есть значение:
d1,d2:tdate;
есть реузльтат:
d3:=d2-d1;
есть некое число:
q:integer;
содержащее кол-во секунд, просто некий промежуток времени.
необходимо узнать какой процент q состовляет в d3.
← →
SergP © (2006-09-23 19:08) [25]> [24] Горе программер (23.09.06 18:52)
> есть значение:
> d1,d2:tdate;
> есть реузльтат:
> d3:=d2-d1;
> есть некое число:
> q:integer;
> содержащее кол-во секунд, просто некий промежуток времени.
> необходимо узнать какой процент q состовляет в d3.
Если от одной даты отнять другую - то получишь длину интервала между этими датами в сутках.
Чтобы перевести в секунды нужно умножить на 86400 (24*60*60)
Значит получаем:
procent:= q/d3/24/60/60*100; //(100 - это из-за того чтобы получить в процентах)
т.е.
procent:=q/d3/864
← →
Горе программер (2006-09-23 19:36) [26]Благодарю!
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.058 c