|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нахождение разницы в часах между двумя датами
У меня есть две переменные s1 и s2.
s1='2010-12-02 17:01:20'; (старт) s2='2010-12-03 00:20:30'; (конец) Мне нужно найти разницу между двумя этими датами в часах. Т.е. должно получится примерно 7 часов 19 минут. Это примерно. Я уже пробовал разделять эти две переменные и заносить правые части (те которые содержат само время) в две переменные типа tdatetime. И эти переменные выглядели так: t1='17:01:20'; t2='00:20:30'; И чтобы узнать разницу во времени достаточно просто написать 24*(t2-t1). Но вот беда, разница-то будет составлять -17 часов 19 минут, что конечно же неправильно. Вообщем пожалуйста помогите разобраться. |
#2
|
||||
|
||||
Юзай вот это:
Код:
function HoursBetween(const ANow: TDateTime; const AThen: TDateTime): Int64; Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Не получится, ибо формат даты не тот.
|
#4
|
||||
|
||||
А вы без преобразования, прямо так из текста, планировали разницу получить? Ню-Ню.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Нет. Дак ведь ошибку выдаст, как можно проводить арифметические операции с текстовым типом?
|
#6
|
|||
|
|||
кто сказал что с текстовым? а как же StrToDateTime?
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#7
|
|||
|
|||
Ну так для этого и существует StrToTime, StrToDateTime
|
#8
|
|||
|
|||
Assistant не работает, пишет что '2010-12-02 17:01:20' is not a valid date time value. У даты ведь должен быть такой формат 2010/12/02, а у меня он такой 2010-12-02.
|
#9
|
|||
|
|||
дык через StringReplace замените - на / вот так:
Код:
var s1, new_s1: string; begin s1 := '2010-12-02 17:01:20'; new_s1 := StringReplace(s1,'-','/',[rfReplaceAll]); // в new_s1 будет дата с - end; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 29.04.2011 в 20:50. |
#10
|
|||
|
|||
Всем спасибо, я наше работающее решение. Мой впорос больше не актуален.
|
#11
|
||||
|
||||
Можно понаблюдаю за процессом перевода строки в дату?
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#12
|
|||
|
|||
Цитата:
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#13
|
||||
|
||||
А проблема в региональных настройках, которые могут быть абсолютно разными на разных компьютерах... Построй логическую цепочку и подумай, какой % юзеров будут ругать программистов из индии...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#14
|
|||
|
|||
это уже проблема не региональных настроек, а программиста который пишет и не учитывает эти настройки. Тут спросили как перевести - я ответил ))
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#15
|
||||
|
||||
Феникс, поддержу Assistant, если предполагаешь что система будет работать где-то (типа в разных часовых поясах), и если время для нее важно - продумай на этапе проектирования... А гринвич получить - не проблема...
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |