2011-10-23 11 views
5

si uso:Steam ID con el tiempo()

$t = time(); 
echo $t; 

Esto sería algo así como: 1319390934

Tengo dos preguntas:

  1. Este valor se puede utilizar como Identificación única ?
  2. cómo generar a partir de ella una fecha?

No puedo usar uniqid(), porque necesito un valor que pueda usarse para ordenar (reciente).

+0

Único en qué contexto? ¿Cómo estás usando la identificación? ('microtime()' también se usa típicamente para identificaciones únicas). –

+0

en este caso un número que no se puede repetir. como un índice único en sql. – user947462

+0

¿Por qué no utilizar un autoincremento de base de datos? – Manhim

Respuesta

9

Usando time() como se ha mencionado le dará una manera ordenable crear identificadores únicos. cadenas Concatenación también aleatoriedad el resultado deseado y todavía mantenerlo sortable:

$uniqueId= time().'-'.mt_rand(); 
+0

'microtime' ordenable ??? ¿Miraste lo que devuelve? – Jon

+1

Sí, asegúrese de que en mt_rand, de lo contrario, dos o más usuarios podrían tener el mismo ID único si se presentan al mismo tiempo. – Mike

4
  1. Obviamente esto no se puede utilizar como una identificación "única" porque, bueno, no es único durante la duración del mismo segundo.
  2. Mire en date.

Si quieres algo que se anuncia como un identificador único y ambos pueden ser ordenados, se puede usar algo como esto que implica uniqid:

$u = time().'-'.uniqid(true); 

estoy quizá un exceso de simplificación aquí , dando por hecho que todos los valores time van a producir tendrán el mismo número de dígitos (de modo que una ordenación de cadena produciría los mismos resultados que un natural sort). Si no desea hacer esta suposición, entonces usted podría considerar

$u = sprintf("%010s-%s", time(), uniqid(true)); 
+0

Dado que es para una base de datos, una columna 'auto_increment' emparejada con una columna' NOW() 'también podría funcionar, dependiendo del uso. –

1

Si está utilizando este código en un entorno en el que tiene una cuenta de usuario con un identificador único, puede anexar el tiempo() para su ID de cuenta para generar una ID única.

Puede convertir el tiempo() de nuevo en una cadena de fecha usando:

$time = time(); 
echo 'The datestamp for (' . $time . ') is ' . date("Y-m-d", $time); 

Por supuesto, el formato de fecha se puede alterar usando cualquiera de fecha de PHP formato().

Cuestiones relacionadas