Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2018, 20:41   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию Datetostr в Windows 10 выводит день недели

Здравствуйте! Суть проблемы в названии темы. Есть у меня программа и пользователи Windows 10 (не все, зависимости пока не нашел) сталкиваются с множественными ошибками в работе этой программы. Опытным путем выяснилось, что при инструкции записи в базу данных и даже просто отображения текущий даты с помощью "DateToStr(now)" результат получается не совсем ожидаемым. А именно, к примеру: "Пт 12.01.00". Соответственно, при попытке обратного преобразования "StrToDate" возникает ошибка: "Пт 12.01.00 is not a valid date".
Может, кто сталкивался с подобным и знает как можно с этим бороться? Не хотелось бы пилить костыль преобразования строки в нужную дату путем удаления лишних "Пт ", "Чт " и так далее.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 16.11.2018, 01:09   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Не надо записывать ни в какую базу дату в строковом формате! От слова совсем.
northener вне форума Ответить с цитированием
Старый 16.11.2018, 08:50   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Не надо записывать ни в какую базу дату в строковом формате! От слова совсем.
Вот именно ) А DateToStr при преобразовании использует ShortDateFormat. Туда настройки из винды попадают. Возможно программа их уже и изменила. Можно FormatDateTime использовать, там самому можно формат задать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.11.2018, 09:18   #4
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 979
По умолчанию

Во-первых, надо определить что тебе надо от датытайма. Реши какой формат тебе удобнее и используй только его. при необходимости меняй на выгрузку.
например удобнее тебе "2018-11-16 08:00:00" так и запиши в переменную во все места.
Код:
d_par:TFormatSettings;

      d_par.DateSeparator:='-';
      d_par.TimeSeparator:=':';
      d_par.ShortDateFormat:='yyyy-mm-dd';
      d_par.LongDateFormat:='yyyy-mm-dd';
      d_par.ShortTimeFormat:='hh:MM:ss';
      d_par.LongTimeFormat:='hh:MM:ss';
      d_par.DecimalSeparator:='.';

//используй

S1:=DateToStr(now,d_par);
//и обратно
StrToDate(S1,d_par);
про остальное читай справку по дельфи. главное тут маленькие "m" это месяц, большие "M" это часы.

а есть ещё такая фигня как

Код:
FormatDateTime('dd.mm.yyyy hh:nn:ss', Now);
где "n" это часы
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.

Последний раз редактировалось IliaIT; 16.11.2018 в 09:20.
IliaIT вне форума Ответить с цитированием
Старый 17.11.2018, 01:50   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Возможно программа их уже и изменила.
И возможно их изменила совсем другая программа.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считая, что год невисокосный и его 1 января приходится на день недели wd1, определить: wd - день недели, на который приходится Галенька Помощь студентам 0 27.05.2012 14:33
день недели (adp) Gul'ka Microsoft Office Access 1 21.03.2012 22:21
День недели по дате Waickem Паскаль, Turbo Pascal, PascalABC.NET 2 14.10.2011 20:39
День недели Марк Охман Общие вопросы Delphi 7 27.09.2010 15:42
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59