2015-04-08 3 views
2

Я работаю над проектом, в котором у меня много операций по управлению. Каждая операция имеет дату окончания и состоит из определенного количества задач.Лучшая практика управления датой и днями

Я хочу, чтобы отобразить напоминания (текст, отображаемый на экране), если задача не сделано раньше [end date] - X days.

Все данные хранятся в базе данных MySQL и я работаю с PHP и HTML5.

  • Какой тип данных (являются) лучшее для работы с датой и дней (в выполнять расчеты)?
  • Могу ли я работать с Date() и вычитать дни в простой форме?

У меня нет конкретного технического вопроса, но я думаю, что совместный лучший способ продолжить - это хорошо, правда?

Мне любопытно узнать, какие лучшие способы приступить к работе и открыть любое предложение!

+1

Research '' timestamp' и datetime' типы столбцов. Кроме того, google для 'php Carbon' - это библиотека, использующая PHP' DateTime'. Конечный результат состоит в том, что у вас есть несколько строк кода, которые выполняют именно то, что вы просили. –

+1

'DATETIME' должно использоваться в MySQL и' new \ DateTime() 'в PHP.MySQL позволяет использовать 'TIMESTAMPDIFF()' функции, а PHP имеет '\ DateInterval()', комбинации позволяют вам все, что может понадобиться. – DanFromGermany

ответ

2

Я рекомендую хранить даты в MySQL в поле метки времени, потому что вы можете использовать значение по умолчанию CURRENT_TIMESTAMP - это очень полезно, и я думаю, что вы не должны беспокоиться об этом, есть много функций: :

MySQL:

select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2015-04-08 12:13:18 | 
+---------------------+ 
select now() - interval 1 day; 
+------------------------+ 
| now() - interval 1 day | 
+------------------------+ 
| 2015-04-07 12:13:29 | 
+------------------------+ 
select now() - interval 7 day; 
+------------------------+ 
| now() - interval 7 day | 
+------------------------+ 
| 2015-04-01 12:13:38 | 
+------------------------+ 
select now() - interval 1 month; 
+--------------------------+ 
| now() - interval 1 month | 
+--------------------------+ 
| 2015-03-08 12:13:58  | 
+--------------------------+ 

PHP:

<?php 
var_export([ 
    date('Y-m-d H:i:s', strtotime('now')), 
    date('Y-m-d H:i:s', strtotime('- 1 day')), 
    date('Y-m-d H:i:s', strtotime('- 7 day')), 
    date('Y-m-d H:i:s', strtotime('- 1 month')), 
]); 
/* 
Result: 

array (
    0 => '2015-04-08 15:15:42', 
    1 => '2015-04-07 15:15:42', 
    2 => '2015-04-01 15:15:42', 
    3 => '2015-03-08 15:15:42', 
) 
*/ 

И иногда очень полезно создать таблицу, как:

CREATE TABLE t1 (
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
); 

в результате ваши поля ц будет автоматически seted и обновленный ...

1

Вы можете сохранить даты как DATETIME в вашей базе.

Затем в PHP преобразовать его в управляемые данными, используя strtotime() и date() функции

0

Лучший тип данных для работы с является DateTime класса.

Для выполнения подклассов с использованием класса DateTime вам необходимо использовать класс DateInterval.

Вам понадобится некоторое время, чтобы получить удовольствие от использования этих двух классов, но это упростит форматирование или операции с датами после обработки.