Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.064 c
2-1158736243
Petrovitch
2006-09-20 11:10
2006.10.08
Проблема с установкой компаненты SPELLER


3-1154774759
wild_arg
2006-08-05 14:45
2006.10.08
Access, ADO, Delphi и шифрация


15-1158557709
Ega23
2006-09-18 09:35
2006.10.08
С Днём рождения! 16 сентября


1-1156347628
trackbar
2006-08-23 19:40
2006.10.08
Снятие фокуса, а не его передача


2-1158308782
TrainerOfDolphins
2006-09-15 12:26
2006.10.08
loCaseInsensitive