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

Вниз

Перевод секунд   Найти похожие ветки 

 
ГореПрограммер   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.034 c
2-1158734182
yel
2006-09-20 10:36
2006.10.08
Как узнать открыт или закрыт CD-ROM?


3-1154566149
Василич
2006-08-03 04:49
2006.10.08
Подсчет значений в одном столбце в компоненте DBGrid


1-1156979593
Dreamse
2006-08-31 03:13
2006.10.08
Компонент - Калькулятор с привязкой к TEdit


2-1158328792
Pa5ha
2006-09-15 17:59
2006.10.08
StrToFloat и языковые стандарты


11-1134294587
MTsv DN
2005-12-11 12:49
2006.10.08
Просмотр ВСЕХ компонентов независимо от Parent а...





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