Я ищу стандарты для добавления даты/времени. Я не смог найти никого. В частности, я надеюсь найти спецификацию, которая определяет, что должно произойти, когда вы добавляете месяц к дате, подобной 31 января. Правильный ответ 28 февраля (/29)? 1 марта? 2 марта?
Я видел противоречивые реализации между различными инструментами (в данном случае, PHP и MySQL), и я пытаюсь найти какие-то стандарты для моей работы.
Разные результаты:
PHP
$end = strtotime("+1 month", 1314835200);
//1317513600 Sat, 01 Oct 2011 20:00:00 -0400
MySQL
SELECT UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(1314835200), INTERVAL 1 MONTH));
#1317427200 Fri, 30 Sep 2011 20:00:00 -0400
Oracle
SELECT ADD_MONTHS('31-Aug-11', 1) FROM dual;
#30-SEP-11
(извините за изменение формата, мой оракул foo слаб)
Java
Calendar c = Calendar.getInstance();
c.clear();
c.set( 2011, Calendar.AUGUST, 31 );
c.add( Calendar.MONTH, 1 );
c.getTime()
#Fri Sep 30 00:00:00 EDT 2011