modificacion - obtener fecha y hora php
PHP: ¿cómo puedo obtener la fecha de creación del archivo? (5)
Desafortunadamente, si está ejecutando Linux, no puede acceder a la información, ya que solo se almacena la última fecha de modificación.
Depende ligeramente de su sistema de archivos aunque. Sé que ext2 y ext3 no admiten el tiempo de creación, pero creo que ext4 sí lo hace.
Estoy leyendo una carpeta con muchos archivos.
¿Cómo puedo obtener la fecha de creación de un archivo? No veo ninguna función directa para obtenerlo.
Hay filemtime
y filectime
.
Y si el archivo no ha sido modificado, ¿qué sucederá?
Existe una solución para Mac OS X que admite el tiempo de creación de la fecha en su sistema de archivos: ¿Cómo obtengo el tiempo de creación real de un archivo en PHP en una Mac?
Sé que este tema es muy viejo, pero, en caso de que alguien esté buscando una respuesta, como yo, estoy publicando mi solución.
Esta solución funciona SI no te importa tener algunos datos adicionales al comienzo de tu archivo.
Básicamente, la idea es, si el archivo no existe, crearlo y anexar la fecha actual en la primera línea. A continuación, puede leer la primera línea con fgets(fopen($file, ''r''))
, convertirla en un objeto DateTime
o cualquier cosa (obviamente, puede usarla en bruto, a menos que la haya guardado en un formato extraño) y listo - ¡tienes tu fecha de creación! Por ejemplo, mi script para actualizar mi archivo de registro cada 30 días se ve así:
if (file_exists($logfile)) {
$now = new DateTime();
$date_created = fgets(fopen($logfile, ''r''));
if ($date_created == '''') {
file_put_contents($logfile, date(''Y-m-d H:i:s'').PHP_EOL, FILE_APPEND | LOCK_EX);
}
$date_created = new DateTime($date_created);
$expiry = $date_created->modify(''+ 30 days'');
if ($now >= $expiry) {
unlink($logfile);
}
}
Use filectime . Para Windows devolverá el tiempo de creación , y para Unix el tiempo de cambio que es el mejor que puede obtener porque en Unix no hay tiempo de creación (en la mayoría de los sistemas de archivos).
Tenga en cuenta también que en algunos textos de Unix, el tiempo de procesamiento de un archivo se conoce como la hora de creación del archivo. Esto está mal. No hay tiempo de creación para archivos Unix en la mayoría de los sistemas de archivos Unix.
$filename = ''somefile.txt'';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}