2013-03-14 6 views
1

У меня есть интересный вопрос.PHP Date String Compression

В таблице, у меня есть поле, которое находится в следующем формате

YYMMDD001 (001 инкрементного до 999)

Эти данные используются для экспорта в программное обеспечение бухгалтерского учета, которое имеет те одно и то же поле с префиксом 9 числовых символов.

Проблема в том, что нам нужен более 999 значений для определенного дня.

До сих пор с PHP мы имеем как

$unique = date("Y-m-d").$counter; // $counter is sprintf'd to have leading zeros 

И самое лучшее решение, которое мы имеем до сих пор является дата 5 цифр, используя год и номер дня, поэтому инкрементный часть расширяется до 9999.

Любой может предложить что-то, что меньше 5 цифр? (Для части даты)

PS: Мы не можем использовать hex, мы привязаны к простому численному представлению.

ответ

3

Вы можете использовать «количество дней с даты X».

Выберите, скажем 1 января 1970 года, или что-то, что вам больше нравится для начальной точки, и вы получите более 270 лет, закодированные в 5 цифр.

Для 4-х цифр это 27 лет, что, я уверен, все еще достаточно для выполнения этой задачи (если вы начинаете считать с этих дней или около того).

+0

Мне нравится ... Я буду ждать еще несколько минут, а затем выберем ответ :) –

+0

«За 4 цифры это 27 лет, что, я уверен, все еще достаточно для этой задачи (если вы начинаете считать с этих дней или около того). " Это то, что сделал трюк, чтобы избежать конфликтов, мы решили использовать его следующим образ ... 4 4 используется, чтобы избежать конфликтов с прошлыми данными, так как 4 никогда не может появиться в первом цифра дня 2-значное значение (sicne no month есть более 31 дня) Спасибо! –