Diferencia entre revisiones de «DateTime»
De ArduWiki
(→Referencias) |
(→Ejemplo 2) |
||
(No se muestran 16 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == 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 | + | 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 15: | 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 23: | Línea 60: | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
− | Si usas la librería | + | 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++"> | <syntaxhighlight lang="c++"> | ||
Línea 48: | Línea 85: | ||
== Ejemplo 2 == | == Ejemplo 2 == | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
− | #include <Wire.h> | + | //#include <Wire.h> |
#include <RTClib.h> | #include <RTClib.h> | ||
Línea 55: | Línea 92: | ||
//RTC_DS3231 rtc; //Reloj con DS3231 | //RTC_DS3231 rtc; //Reloj con DS3231 | ||
− | char | + | char diaSemana[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"}; |
void setup () { | void setup () { | ||
Línea 66: | Línea 103: | ||
void loop () { | void loop () { | ||
− | DateTime | + | DateTime hoy = rtc.now(); |
− | Serial.print( | + | Serial.print(hoy.year()); |
− | Serial.print(' | + | Serial.print('-'); |
− | Serial.print( | + | Serial.print(hoy.month()); |
− | Serial.print(' | + | Serial.print('-'); |
− | Serial.print( | + | Serial.print(hoy.day()); |
Serial.print(" ("); | Serial.print(" ("); | ||
− | Serial.print( | + | Serial.print(diaSemana[now.dayOfTheWeek()]); |
Serial.print(") "); | Serial.print(") "); | ||
− | Serial.print( | + | Serial.print(hoy.hour()); |
Serial.print(':'); | Serial.print(':'); | ||
− | Serial.print( | + | Serial.print(hoy.minute()); |
Serial.print(':'); | Serial.print(':'); | ||
− | Serial.println( | + | Serial.println(hoy.second()); |
Serial.print("Desde 1-ENE-1970 = "); | Serial.print("Desde 1-ENE-1970 = "); | ||
Serial.print("Segundos = "); | Serial.print("Segundos = "); | ||
− | Serial.println( | + | Serial.println(hoy.unixtime()); |
Serial.print("Dias = "); | Serial.print("Dias = "); | ||
− | Serial.println( | + | Serial.println(hoy.unixtime() / 86400L); |
− | // | + | //calcula fecha dentro de 7 dias, 12 horas, 30 minutos y 6 segundos |
− | DateTime | + | DateTime futuro (hoy + TimeSpan(7,12,30,6)); |
− | Serial.print(" | + | Serial.print("Fecha furura: "); |
− | Serial.print( | + | Serial.print(futuro.year()); |
Serial.print('-'); | Serial.print('-'); | ||
− | Serial.print( | + | Serial.print(futuro.month()); |
Serial.print('-'); | Serial.print('-'); | ||
− | Serial.print( | + | Serial.print(futuro.day()); |
Serial.print(' '); | Serial.print(' '); | ||
− | Serial.print( | + | Serial.print(futuro.hour()); |
Serial.print(':'); | Serial.print(':'); | ||
− | Serial.print( | + | Serial.print(futuro.minute()); |
Serial.print(':'); | Serial.print(':'); | ||
− | Serial.print( | + | Serial.print(futuro.second()); |
Serial.println(); | Serial.println(); | ||
Línea 111: | Línea 148: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Libreria RTC</categorytree> | |
− | |||
− | |||
− | |||
== Referencias == | == Referencias == | ||
+ | * [https://adafruit.github.io/RTClib/html/class_date_time.html Clase DateTime] - Adafruit | ||
* [https://github.com/adafruit/RTClib RTClib] - Adafruit | * [https://github.com/adafruit/RTClib RTClib] - Adafruit | ||
− | [[Category: | + | [[Category:Libreria RTC]] |
Revisión actual del 16:44 23 ene 2020
Contenido
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é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
- Clase DateTime - Adafruit
- RTClib - Adafruit