Timestamp

Buenos dias a todos,

Bueno gente estoy tratando de buscar alguna funcion que me combierta la hora ACTUAL a timestamp porque necesito hacer unos calculos.

Si alguien sabe por favor se lo agradeceria mucho !.

Cuento con Rtc - Reloj De Tiempo Real - Ds1307.

Buenas escudero, y disculpa mi ignorancia, pero que es timestamp? lo he buscado y no encuentro ninguna explicación

la propia libreria te da el valor en unixtimestamp

Serial.print(now.unixtime());

Marcial:
Buenas escudero, y disculpa mi ignorancia, pero que es timestamp? lo he buscado y no encuentro ninguna explicación

Mira yo tampoco se muy bien que es pero por lo que eh leido es para formar la fecha , hora , minutos y segundos en numeros seguidos

Por ejemplo: 24/01/2014 - 16:00:00 hs en timestamp es : 24012014160000

Eso es lo que entendi.

Sergegsx:
la propia libreria te da el valor en unixtimestamp

Serial.print(now.unixtime());

Lo acabo de probar y no funciona te dejo el sketch que uso para ver la hora:

#include "Wire.h"
#define DS1307_ADDRESS 0x68

void setup(){
  Wire.begin();
  Serial.begin(9600);
}

void loop(){
  printDate();
  delay(1000);
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

void printDate(){

  // Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);

  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);

  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());

  //print the date EG   3/1/11 23:59:59
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(month);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);

}

Edit: Aca dejo una foto del error de la forma que lo probe

Gracias por la aclaración Escuderokevin, algo así intuia, pero no encontré nada queme lo aclarara.

Con respecto a tu problema, no se si te servirá de algo, yo el reloj lo tengo incorporado al escudo de la pantalla táctil, así que no uso el wire para acceder a el, pero creo que la librería del reloj si es necesaria y no la estas cargando.

Por otro lado el formato DDMMAAHHMMSS, no te va a servir para realizar cálculos directos (a menos que exista alguna función especifica para eso).

Un saludo

Sergegsx: en primer lugar gracias, porque mira que ni me había fijado en que la librería tiene función para unixtime (yo me había hecho algo similar para trabajar mis fechas).
Marcial: el formato unixtime es lo más sencillo para comparar fechas, ya que comparas directamente enteros largos sin signo (indica el número de segundos transcurridos desde 1/1/1970).
EscuderoKevin: creo que estás accediendo al reloj sin mediar librería, ¿no?. Creo que te merece la pena usar esta librería, que ya te da hecha la mayor parte del trabajo. Incluso en el ejemplo datecalc puedes ver una llamada a unixtime.
EDITO: lo de la fecha-hora seguida es un formato típico de mysql, que también sirve para comparar (más bien ordenar) fechas, pero va en formato YYYYMMDDHHMMSS, es decir añomesdiahoraminutosegundo.
Saludos.

gracias por la aclaración, así si tiene sentido :slight_smile: