Вы говорите об форматировании или создании его? Если последнее, одно решения я использовал в прошлом почтенное:
YYMMDDhhmmssnnn
где YY..ss
является очевидным и nnn
просто число, которое увеличивает каждый раз, когда вы получаете идентификатор транзакции. Таким образом, до тех пор, пока вы не запрашиваете более тысячи идентификаторов в секунду, вы получите свою уникальность, и идентификаторы будут переворачиваться только каждый век.
Конечно, если вам действительно нужно немного больше уплотнения, вы можете использовать тот факт, что многие из этих двухзначных полей являются отходами. Настройка массива символов в состоянии кодировать некоторые из полей в один characterfrom набор:
abcdefghijklmnopqrstuvwxyz (values 0-25)
ABCDEFGHIJKLMNOPQRSTUVWXYZ ( 26-51)
( 52-61)
(62 символов) и использовать его для кодирования MM, DD, чч, мм и сс в один символ.
Например, апрель, месяц 4, может быть кодирован как e
. Сорок пять минут после часа будут иметь минутное поле, закодированное как T
.
Это спасает 5 символов, добавляет в век CC, чтобы остановить его от перескакивания еще на 8 000 лет или около того, и вы можете обрабатывать миллион ID в секунду, десять миллионов, если вы кодируете CC
так же, LL в конечном итоге с проблемой Y6K :-)
Так прямо сейчас (2010-02-25/20: 22: 15), вы получите, если предположить, что в настоящее время nnnnnn
0):
2010 c z u w p 000000
| | | | | | |
| | | | | | +- sequence number within second
| | | | | +------ p = 15 (second)
| | | | +-------- w = 22 (minute)
| | | +---------- u = 20 (hour)
| | +------------ z = 25 (day)
| +-------------- c = 2 (month)
+----------------- 2010 = 2010 (year)
Как многие транзакции в год вы ожидаете? – Fionnuala