PHP 5.6.0 released

La clase MongoDate

(PECL mongo >=0.8.1)

Introducción

Representa objetos de tipo fecha para la base de datos. Esta clase debe usarse para almacenar fechas en la base de datos y para consultarlas. Por ejemplo:

Ejemplo #1 Almacenar datos con MongoDate

<?php

// guardar una fecha en base de datos
$collection->save(array("ts" => new MongoDate()));

$start = new MongoDate(strtotime("2010-01-15 00:00:00"));
$end = new MongoDate(strtotime("2010-01-30 00:00:00"));

// encontrar fechas entre 1/15/2010 y 1/30/2010
$collection->find(array("ts" => array('$gt' => $start'$lte' => $end)));

?>

MongoDB almacena fechas en milisegundos tras la fecha de referencia. Esto significa que las fechas no contienen información de zonas horarias. Si fuera necesario, la zona horaria deberá ser almacenada en otro campo. Además, esto significa que cualquier nivel de precisión más allá de milisegundos se perderá al leer o escribir en la base de datos.

Sinopsis de la Clase

MongoDate {
/* Campos */
public int $sec ;
public int $usec ;
/* Métodos */
public __construct ([ int $sec = time() [, int $usec = 0 ]] )
public string __toString ( void )
}

Tabla de contenidos

add a note add a note

User Contributed Notes 2 notes

up
5
jhonnydcano at yahoo dot com
4 years ago
For showing a human readable MongoDate, you can use something like this:

<?php
date
('Y-M-d h:i:s', $yourDate->sec);
?>
up
-1
richard at securebucket dot com
2 years ago
I wanted a way to check the age of a record.  This code will calculate the time between the creation date of the record, and return the seconds.  I use it for caching pages similar to the max-age header in a browser.  If the record is older, than my limit it deletes itself.

<?php
function microtime_diff( $start, $end=NULL ) {
        if( !
$end ) {
           
$end= microtime();
        }
        list(
$start_usec, $start_sec) = explode(" ", $start);
        list(
$end_usec, $end_sec) = explode(" ", $end);
       
$diff_sec= intval($end_sec) - intval($start_sec);
       
$diff_usec= floatval($end_usec) - floatval($start_usec);
        return
floatval( $diff_sec ) + $diff_usec;
}

microtime_diff($cache['stamp']->sec);
?>
To Top