Diferencia entre revisiones de «DateTime»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripcion == == Sintaxis == <pre> DateTime variable (año,mes,dia,hora,min,seg); </pre> == Parametros == ;variable: ;año: 4 digitos del año. ;mes: 2 digitos del me...»)
 
(Ejemplo 2)
 
(No se muestran 29 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
== Descripcion ==
+
== Descripción ==
 +
La libreria '''RTClib.h''' agrega la funcionanlidad de reloj al Arduino, con o sin hardware externo. Permite que un [[boceto]] obtenga la fecha y hora actual. También proporciona tiempo estándar '''DateTime'''.
 +
 
 +
DateTime es una clase simple de fecha hora de uso general sin TZ/DST.
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
 +
#include <RTClib.h>
 
DateTime variable (año,mes,dia,hora,min,seg);
 
DateTime variable (año,mes,dia,hora,min,seg);
 +
DateTime variable (segundos totales);
 
</pre>
 
</pre>
  
Línea 14: Línea 19:
 
;min: 2 digitos de los minutos entre 0~59.
 
;min: 2 digitos de los minutos entre 0~59.
 
;seg: 2 digitos de los segundos entre 0~59.
 
;seg: 2 digitos de los segundos entre 0~59.
 +
;segundos totales:segundos desde 1-ENE-1970
  
 
== Retorna ==
 
== Retorna ==
 +
Nada.
 +
 +
 +
== Métodos ==
 +
 +
{| class="wikitable"
 +
|+Métodos disponibles clase DateTime
 +
|-
 +
! Método !! Descripción
 +
|-
 +
| year() || Año
 +
|-
 +
| month() || Mes (1~12)
 +
|-
 +
| day() || Dia (1~31)
 +
|-
 +
| hour() || Horas (0~23)
 +
|-
 +
| minute() || Minutos (0~59)
 +
|-
 +
| second() || Segundos (0~59)
 +
|-
 +
| dayOfTheWeek() || Dia de la semana (0=domingo)
 +
|-
 +
| secondstime() || Segundos desde 1-ENE-2000
 +
|-
 +
| unixtime() || Segundos desde 1-ENE-1970
 +
|-
 +
| timestamp() || Formato "2020-01-01T08:00:00
 +
|}
 +
 +
== Comentarios ==
 
Nada.
 
Nada.
  
Línea 21: Línea 59:
 
Nada.
 
Nada.
  
== Ejemplo ==
+
== Ejemplo 1 ==
 +
Si usas la librería [[RTC|RTClib.h]] tendrás disponible el método '''.unixtime()''' que es excelente para hacer operaciones con fechas.
 +
 
 +
<syntaxhighlight lang="c++">
 +
DateTime t0 (2018,7,14,8,0,0);          //2018-7-14 8:00:00
 +
//Calculos 1
 +
DateTime t1 = t0 + TimeSpan(0,1,0,0);    //Añadir una hora
 +
DateTime t2 = t0 + TimeSpan(1,0,0,0);    //Añadir un dia
 +
DateTime t3 = t0 - TimeSpan(7,0,0,0);    //Restar una semana
 +
//Calculos 2
 +
DateTime unix = t0.unixtime();          //1531555200
 +
DateTime t1 (t0.unixtime() + 3600);      //Añadir una hora
 +
DateTime t2 (t0.unixtime() + 86400L);    //Añadir un dia
 +
DateTime t3 (t0.unixtime() - 7*86400L);  //Restar una semana
 +
//Mostrar
 +
Serial.print(t0.unixtime());            //1531555200
 +
Serial.print(t0.year());                //2018
 +
Serial.print(t0.month());                //7
 +
Serial.print(t0.day());                  //14
 +
Serial.print(t0.hour());                //8
 +
Serial.print(t0.minute());              //0
 +
Serial.print(t0.second());              //0
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
//#include <Wire.h>
 +
#include <RTClib.h>
 +
 +
RTC_Millis rtc;    //Reloj por software
 +
//RTC_DS1307 rtc;  //Reloj con DS1307
 +
//RTC_DS3231 rtc;  //Reloj con DS3231
 +
 +
char diaSemana[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};
 +
 +
void setup () {
 +
  Serial.begin(57600);
 +
  //Para setear RTC con fecha y hora cuando se compila
 +
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
 +
  //Para setear RTC a 21-MAR-2019 8:00:00
 +
  //rtc.adjust(DateTime(2019, 3, 21, 8, 0, 0));
 +
}
 +
 +
void loop () {
 +
    DateTime hoy = rtc.now();
 +
   
 +
    Serial.print(hoy.year());
 +
    Serial.print('-');
 +
    Serial.print(hoy.month());
 +
    Serial.print('-');
 +
    Serial.print(hoy.day());
 +
    Serial.print(" (");
 +
    Serial.print(diaSemana[now.dayOfTheWeek()]);
 +
    Serial.print(") ");
 +
    Serial.print(hoy.hour());
 +
    Serial.print(':');
 +
    Serial.print(hoy.minute());
 +
    Serial.print(':');
 +
    Serial.println(hoy.second());
 +
   
 +
    Serial.print("Desde 1-ENE-1970 = ");
 +
 +
    Serial.print("Segundos = ");
 +
    Serial.println(hoy.unixtime());
 +
 +
    Serial.print("Dias = ");
 +
    Serial.println(hoy.unixtime() / 86400L);
 +
   
 +
    //calcula fecha dentro de 7 dias, 12 horas, 30 minutos y 6 segundos
 +
    DateTime futuro (hoy + TimeSpan(7,12,30,6));
 +
   
 +
    Serial.print("Fecha furura: ");
 +
    Serial.print(futuro.year());
 +
    Serial.print('-');
 +
    Serial.print(futuro.month());
 +
    Serial.print('-');
 +
    Serial.print(futuro.day());
 +
    Serial.print(' ');
 +
    Serial.print(futuro.hour());
 +
    Serial.print(':');
 +
    Serial.print(futuro.minute());
 +
    Serial.print(':');
 +
    Serial.print(futuro.second());
 +
    Serial.println();
 +
   
 +
    Serial.println();
 +
    delay(3000);
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[TimeSpan]]
+
<categorytree mode=all>Libreria RTC</categorytree>
* [[Time.h]]
 
  
 
== Referencias ==
 
== Referencias ==
 +
* [https://adafruit.github.io/RTClib/html/class_date_time.html Clase DateTime] - Adafruit
 +
* [https://github.com/adafruit/RTClib RTClib] - Adafruit
  
[[Category:Variables]]
+
[[Category:Libreria RTC]]

Revisión actual del 16:44 23 ene 2020

Descripción

La libreria RTClib.h agrega la funcionanlidad de reloj al Arduino, con o sin hardware externo. Permite que un boceto obtenga la fecha y hora actual. También proporciona tiempo estándar DateTime.

DateTime es una clase simple de fecha hora de uso general sin TZ/DST.

Sintaxis

#include <RTClib.h>
DateTime variable (año,mes,dia,hora,min,seg);
DateTime variable (segundos totales);

Parametros

variable
año
4 digitos del año.
mes
2 digitos del mes entre 1~12.
dia
2 digitos del dia entre 1~31.
hora
2 digitos de la hora entre 0~23.
min
2 digitos de los minutos entre 0~59.
seg
2 digitos de los segundos entre 0~59.
segundos totales
segundos desde 1-ENE-1970

Retorna

Nada.


Métodos

Métodos disponibles clase DateTime
Método Descripción
year() Año
month() Mes (1~12)
day() Dia (1~31)
hour() Horas (0~23)
minute() Minutos (0~59)
second() Segundos (0~59)
dayOfTheWeek() Dia de la semana (0=domingo)
secondstime() Segundos desde 1-ENE-2000
unixtime() Segundos desde 1-ENE-1970
timestamp() Formato "2020-01-01T08:00:00

Comentarios

Nada.

Advertencias

Nada.

Ejemplo 1

Si usas la librería RTClib.h tendrás disponible el método .unixtime() que es excelente para hacer operaciones con fechas.

DateTime t0 (2018,7,14,8,0,0);           //2018-7-14 8:00:00
//Calculos 1
DateTime t1 = t0 + TimeSpan(0,1,0,0);    //Añadir una hora
DateTime t2 = t0 + TimeSpan(1,0,0,0);    //Añadir un dia
DateTime t3 = t0 - TimeSpan(7,0,0,0);    //Restar una semana
//Calculos 2
DateTime unix = t0.unixtime();           //1531555200
DateTime t1 (t0.unixtime() + 3600);      //Añadir una hora
DateTime t2 (t0.unixtime() + 86400L);    //Añadir un dia
DateTime t3 (t0.unixtime() - 7*86400L);  //Restar una semana
//Mostrar
Serial.print(t0.unixtime());             //1531555200
Serial.print(t0.year());                 //2018
Serial.print(t0.month());                //7
Serial.print(t0.day());                  //14
Serial.print(t0.hour());                 //8
Serial.print(t0.minute());               //0
Serial.print(t0.second());               //0

Ejemplo 2

//#include <Wire.h>
#include <RTClib.h>

RTC_Millis rtc;     //Reloj por software
//RTC_DS1307 rtc;   //Reloj con DS1307
//RTC_DS3231 rtc;   //Reloj con DS3231

char diaSemana[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};

void setup () {
   Serial.begin(57600);
   //Para setear RTC con fecha y hora cuando se compila
   rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   //Para setear RTC a 21-MAR-2019 8:00:00
   //rtc.adjust(DateTime(2019, 3, 21, 8, 0, 0));
}

void loop () {
    DateTime hoy = rtc.now();
    
    Serial.print(hoy.year());
    Serial.print('-');
    Serial.print(hoy.month());
    Serial.print('-');
    Serial.print(hoy.day());
    Serial.print(" (");
    Serial.print(diaSemana[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(hoy.hour());
    Serial.print(':');
    Serial.print(hoy.minute());
    Serial.print(':');
    Serial.println(hoy.second());
    
    Serial.print("Desde 1-ENE-1970 = ");

    Serial.print("Segundos = ");
    Serial.println(hoy.unixtime());

    Serial.print("Dias = ");
    Serial.println(hoy.unixtime() / 86400L);
    
    //calcula fecha dentro de 7 dias, 12 horas, 30 minutos y 6 segundos
    DateTime futuro (hoy + TimeSpan(7,12,30,6));
    
    Serial.print("Fecha furura: ");
    Serial.print(futuro.year());
    Serial.print('-');
    Serial.print(futuro.month());
    Serial.print('-');
    Serial.print(futuro.day());
    Serial.print(' ');
    Serial.print(futuro.hour());
    Serial.print(':');
    Serial.print(futuro.minute());
    Serial.print(':');
    Serial.print(futuro.second());
    Serial.println();
    
    Serial.println();
    delay(3000);
}

Vea también


Referencias