Ich habe in einer Variable eine Uhrzeit in dem Format "12:34:56"
Ich brauche nun den (Unix) Timestamp des aktuellen Tages mit der Uhrzeit aus der Variable
uhrzeit = "12:34:56"
timestamp = ? Aktueller Tag + uhrzeit ?
Ich habe in einer Variable eine Uhrzeit in dem Format "12:34:56"
Ich brauche nun den (Unix) Timestamp des aktuellen Tages mit der Uhrzeit aus der Variable
uhrzeit = "12:34:56"
timestamp = ? Aktueller Tag + uhrzeit ?
Timestamp aus Zeit-String erstellen? Schau mal ob du hier fündig wirst!
das hier hilft mir schon seit Jahren
ewiger Kalender, leider in C (ich habe auch eine VBA Variante für Exel)
damit kann man mit Time
eine long integer Varable machen
also
Stunde * 3600 (für Sekunden) +
Minute * 60 (für Sekunden) +
Sekunde +
Sekunden pro Tag = 24 * 3600
x Tage Offset
es ist normalerweise nicht nötig die Sekunden bis zum Jahr 0 zu rechnen wäre eine 64 - bit long, aber mit einer 32 bit long käme man ab heute lange genug nach vorne, einfach ein Offset berechnen
2^32-1 reicht 4294967295 Sekunden
bei 86400 Sekunden pro Tag reicht das 49710 Tage = 136 Jahre ab heute
heute ist der Tag 0
wir wollen morgen einschalten + x Sekunden und in einer Woche ausschalten (einfach rechnen)
dann immer die aktuelle Sekunde holen und vergleichen.
also aktuelles Datum und Zeit in Sekunde umrechnen, aus der Tabelle Datum und Zeit nehmen umrechnen in Sekunden und vergleichen.
was interessiert auch die Sekunde vor 30 Jahren, wir wollen ja zukünftig schalten.
calen.c
#include "calen.h"
#ifndef MY_TYPES_H
#include "my_types.h"
#endif
//---- Algorithmen ----
//
// Eingabe: Jahr
// Ausgabe: 0 kein Schaltjahr 1 Schaltjahr
//
UBYTE schaltjahr( UWORD jahr )
{ if( ((jahr % 4 == 0) &&
(jahr % 100 != 0)) ||
(jahr % 400 == 0) )
return (UBYTE)1;
return (UBYTE)0;
}
// kurzform
UBYTE schaltjahr( UWORD jahr )
{ if( (jahr % 4 == 0) )
return (UBYTE)1;
return (UBYTE)0;
}
//
// Eingabe: Jahr
// Tagesnummer rel. zum Jahresanfang
// (1=1.1.,2=2.1.,...365/366=31.12)
// Ausgabe: Monat (1=Jan, 2=Feb, ... 12 = Dec)
// Algorithmus von R. A. Stone
//
UBYTE monat_im_jahr(UWORD jahr, UWORD n)
{ UBYTE a;
a = schaltjahr(jahr);
if ( (WORD)n > 59+a )
n += 2-a;
n += 91;
return (UBYTE)((20*n)/611 - 2);
}
//
// Eingabe: Jahr
// Tagesnummer rel. zum Jahresanfang
// (1=1.1.,2=2.1.,...365/366=31.12)
// Ausgabe: Tag (1..31)
// Algorithmus von R. A. Stone
//
UBYTE tag_im_monat(UWORD jahr, UWORD n)
{ UBYTE a;
WORD m;
a = schaltjahr(jahr);
if ( (WORD)n > 59+a )
n += 2-a;
n += 91;
m = (20*n)/611;
return (UBYTE)(n - (611*m)/20);
}
//
// Eingabe: Jahr
// Monat (1=Jan, 2=Feb, ... 12 = Dec)
// Tag (1...31)
// Ausgabe: Tagesnummer rel. zum Jahresanfang
// (1=1.1.,2=2.1.,...365/366=31.12)
// Algorithmus von Robertson
//
UWORD tagesnummer( UWORD jahr, UBYTE monat, UBYTE tag )
{ int d, e;
d= (monat+10)/13;
e= tag+ (611*(monat+2))/20 - 2*d - 91;
return e + schaltjahr(jahr)*d;
}
//
// Eingabe: Jahr, Tagesnummer
// Ausgabe: Wochentag (1=Mo,..., 6=Sa, 7=So)
//
UBYTE wochentag_im_jahr(UWORD jahr, UWORD n)
{ int j,c; UBYTE _wt_;
j = (jahr-1) % 100;
c = (jahr-1) / 100;
_wt_UBYTE)((28+j+n+(j/4)+(c/4)+5*c) % 7);
if(!_wt_) //case 0: // C'T // 7 dcf77 + rtc
_wt_=7;
return _wt_;
}
char *strWochentagname( UBYTE TagNummer )
{ switch (TagNummer)
{ case 1:
return"Montag ";
case 2:
return"Dienstag ";
case 3:
return"Mittwoch ";
case 4:
return"Donnerstag";
case 5:
return"Freitag ";
case 6:
return"Samstag ";
case 7: // RTC
//case 0: // C'T
return"Sonntag ";
default:
return"ERROR ";
}
}
char *strWochentagname_kurz( UBYTE TagNummer )
{ switch (TagNummer)
{ case 1:
return"Mo";
case 2:
return"Di";
case 3:
return"Mi";
case 4:
return"Do";
case 5:
return"Fr";
case 6:
return"Sa";
case 7: // RTC // dcf77
//case 0: // C'T
return"So";
default:
return"ER";
}
}
char* strMonatsname( UBYTE Monat )
{ switch (Monat)
{
case 1:
return"Januar";
case 2:
return"Februar";
case 3:
return"Maerz";
case 4:
return"April";
case 5:
return"Mai";
case 6:
return"Juni";
case 7:
return"Juli";
case 8:
return"August";
case 9:
return"September";
case 10:
return"Oktober";
case 11:
return"November";
case 12:
return"Dezember";
default:
return"ERROR";
}
}
//
// Eingabe: Jahr
// Ausgabe: Tagesnummer des Ostersonntag,
// rel. zum Jahresanfang.
// Algorithmus "Computus ecclesiasticus"
//
// 325 n.Chr. wurde Ostern auf den Sonntag nach
// dem ersten Fruehlingsvollmond festgelegt. Damit
// liegt Ostern zwischen dem 22. Maerz und
// dem 25. April.
//
WORD ostersonntag(UWORD jahr)
{ WORD gz, jhd, ksj, korr, so, epakte, n;
gz = (jahr%19)+1;
jhd = jahr/100+1;
ksj = (3*jhd)/4-12;
korr = (8*jhd+5)/25-5;
so = (5*jahr)/4-ksj-10;
epakte = (11*gz+20+korr-ksj) % 30;
if ( (epakte == 25 && gz > 11) || epakte == 24 )
epakte++;
n = 44-epakte;
if ( n < 21 )
n = n + 30;
n = n + 7 - (so+n) % 7;
n += schaltjahr(jahr);
return n+59;
}
//
// Eingabe: Jahr, Monat
// Ausgabe: Monatstage
//
UBYTE Monatstage( UWORD jahr, UBYTE Monat )
{ switch ((int)Monat)
{
case 1:
return 31;
case 2:
return (UBYTE)(28 + schaltjahr(jahr));
case 3:
return 31;
case 4:
return 30;
case 5:
return 31;
case 6:
return 30;
case 7:
return 31;
case 8:
return 31;
case 9:
return 30;
case 10:
return 31;
case 11:
return 30;
case 12:
return 31;
default:
return 0;
}
}
// Eingabe: Jahr, Tagesnummer, Hour
// Ausgabe: MESZ 1:0
UBYTE mesz( UWORD jahr, UWORD tij, UBYTE hour )
{ unsigned char beginnMESZ = tagesnummer( jahr, 3, 31 );
unsigned endeMESZ = tagesnummer( jahr, 10, 31 );
UBYTE mo;
mo=monat_im_jahr(jahr, tij);
if(mo > 2 && mo < 11) // 11, 12, 1 und 2 haben keine Sommerzeit
{
// auf Sommerzeit korrigieren
while(wochentag_im_jahr(jahr, beginnMESZ) != 7)
beginnMESZ--;
while(wochentag_im_jahr(jahr, endeMESZ) != 7)
endeMESZ--;
if( tij>beginnMESZ && tij<endeMESZ )
return (UBYTE)1;
else
{ if( tij==beginnMESZ && hour>=2 )
return (UBYTE)1;
if( tij==endeMESZ && hour<3 )
return (UBYTE)1;
}
}
return (UBYTE)0;
} // UBYTE mesz( UWORD jahr )
Alles anzeigen
calen.h
#ifndef CALEN_H
#define CALEN_H
#ifndef MY_TYPES_H
#include "my_types.h"
#endif
extern UBYTE schaltjahr( UWORD ); //Eingabe:Jahr -> Ausgabe: 0 kein Schaltjahr / 1 Schaltjahr
//UWORD schaltjahr( UWORD ); //Eingabe:Jahr -> Ausgabe: 0 kein Schaltjahr / 1 Schaltjahr
extern UBYTE monat_im_jahr(UWORD,UWORD);//Eingabe:Jahr,Tagesnum.rel.z.Jahresanfang(1,2,3,..365,366=31.12) ->Ausgabe: Monat(1=Jan..12=Dec)
/*
extern UBYTE tag_im_monat(UWORD, UWORD);//Eingabe:Jahr,Tagesnummer -> Ausgabe: Tag (1..31)
*/
extern UBYTE wochentag_im_jahr(UWORD, UWORD);//Eingabe:Jahr,Tagesnummer -> Ausgabe: Wochentag(1=Mo,..., 6=Sa, 7=So)
extern char *strWochentagname(UBYTE);//Eingabe:Wochentag(1=Mo,.., 7=So) -> Ausgabe: Wochentagname("Montag ", "Dienstag ", ..."Sonntag ", "ERROR ")
extern char *strWochentagname_kurz(UBYTE);//Eingabe:Wochentag(1=Mo,.., 7=So) -> Ausgabe: Wochentagname("Mo", "Di", ..."So", "ER")
/*
extern char* strMonatsname(UBYTE);//Eingabe:Monat(1...12) -> Ausgabe: Monatsname("Januar"..."Dezember")
extern WORD ostersonntag(UWORD);//Eingabe:Jahr -> Ausgabe:Tagesnum.rel.z.Jahresanfang(1,2,3,..365,366=31.12)
*/
extern UWORD tagesnummer(UWORD, UBYTE, UBYTE);//Eingabe:Jahr,Monat(1=Jan..12=Dec),Tag(1..31) -> Ausgabe:Tagesnum.rel.z.Jahresanfang(1,2,..365,366=31.12)
extern UBYTE Monatstage(UWORD, UBYTE);//Eingabe:Jahr, Monat -> Ausgabe: Monatstage(28-31)
extern UBYTE mesz( UWORD, UWORD, UBYTE );//Eingabe: Jahr, Tagesnummer, Hour
#endif // #ifndef CALEN_H
Alles anzeigen
Wir reden wirklich vom unix-timestamp? also z.B. 1394577780 (12.03.2014 22:43:00)?
Ich habe in einer Variable eine Uhrzeit in dem Format "12:34:56"
Ich brauche nun den (Unix) Timestamp des aktuellen Tages mit der Uhrzeit aus der Variableuhrzeit = "12:34:56"
timestamp = ? Aktueller Tag + uhrzeit ?
Was du suchst ist die "time" funktion von Python:
http://openbook.galileocomputing.de/python/python_…68b0f1ff3efa605
Da steht, wie es geht... den gegebenen String in der Variablen musst du noch in Stunden, Minuten und Sekunden zerlegen, was ja mit den Stringfunktionen in Python auch sehr easy geht...
:thumbs1:
Zentris
Warum bennenst du eine Liste als tupel?
Tupel:
"...[font="sans-serif"]Ein Tupel ist eine endliche Liste, in der hintereinander [/font][font="sans-serif"]mathematische Objekte[/font][font="sans-serif"], die nicht notwendig voneinander verschieden sein müssen, angegeben sind, wobei die Reihenfolge entscheidend ist. Zum Beispiel sind die Listen..."[/font]
Hab ich mir einfach so gedacht... das Progrämmchen hab ich in 5 min schnell mal "hingeklatscht", da hab ich mir so die Begriffe, mit denen ich so auf Arbeit derzeit zu tun habe "ausgeliehen"... hat also keinen tiefgreifenden Hintergrund...
tupel sind unveränderliche Listen in Python und zudem ist der Name 'tuple' bereits reserviert.
help(tuple)
Edit:
Muss mir glaub ne Brille kaufen. Du schriebst ja tupel und ich las tuple
Edit 2:
Listen und Tupels sind in Python zwei verschiedene Datentypen so wie integer und float
haarspalterrei
Hm, und nun?
Hast den Link auf "Tupel" gelesen? Steht nix von "unverbindlich"... sondern "geordnet" usw...
Ist (mir) letzlich auch egal, es geht um das Prinzip der Umsetzung/Lösung eines Problems....
haarspalterrei
Ich nenn meine variablen gerne a-z. wobei i = integerwerte und x= strings in schleifen sind. aber eine List tupel zu nennen verwirrt beim querlesen dann doch schon.
Aber am ende hast du recht, solange er damit klar kommt ist alles gut.
kleine Anmerkung: Obacht bei python 2.x, dort ist True keine Schlüsselwort.
Somit ist True false, was echt verwirrend ist.
Wenn man so ein kleines Codesnippet schreibt - die Betonung liegt auf klein - ist es ziemlich egal wie die Variablen heissen. In dem Moment sieht man am Namen was der Coderersteller gedacht hat (eine Art freudscher Versprecher?)
Wenn ich eine größere Menge von CodeZeilen habe benutze ich immer Namen die zum zu lösenden Problem passen. Also nicht Liste sondern Personen oder Besucher wenn ich eine Liste von Personen oder Besuchern im Code bearbeite. Die Implementierung der Liste als Map, Hashmap, Set oder sonst was kann sich jederzeit ändern und hilft nicht bei der Lesbarkeit eines Programms. Spätestens wenn man nach einem halben Jahr ein von einem selbst geschriebenes Programm erweitern will oder man einen Fehler sucht ist man glücklich sprechende Variablennamen gewählt zu haben. Da ein jeder schreibfaul ist liegt natürlich nahe, a,b,c zu benutzen. Aber die IDEs heutzutage unterstützen einen sehr bei der Variablencompletion so dass ich eigentlich nur noch in kurzen trivialen Schleifen ein i, j oder k benutze - und a,b,c in CodeSnippets
Na gut, dann will ich das mal begründen (will aber nicht den Oberlehrer rauskehren, nur mal so erläutern...)
Nun ja, vermutlich werden die meisten hier mit dem "Tupel" Begriff nix anfangen können, weil der im normalen Sprachgebrauch meist nicht eingesetzt wird. Da, wo ich arbeite eben schon, so dass ich mir da keine Gedanken bei der Verwendung gemacht haben.
Der Begriff "Tupel" kommt letztlich aus der Mengenlehre und bezeichnet mathematisch gesehen Listen... mit definierten Eigenschaften => kann man auch in dem Wiki-Beitrag nachlesen.
Ich habe den Begriff zwar so mal locker eingesetzt, aber durchaus im Zusammenhang:
Die Aufspaltung des gegeben Strings "12:30:10" in eine Liste ist ja notwendig.
Nun hat die Liste aber eine "besondere" Eigenschaft: die Position, an der die Werte stehen, ist wichtig (hh : mm : ss)
==> "hh" => Element No. 0, "mm" => Element No. 1 usw.
damit später der richtige Wert entnommen werden kann.
Es ist also wichtig, eine Liste zu nehmen, die die Elemente so wiedergibt, wie sie eingespeist werden, es gibt auch Listen/Arrays, wo die Position des Elemente nicht zwingend die ist, in der sie eingespeist werden (hash-Arrays usw.., Assoziative Arrays... - ok, die haben noch einen Key...)
So, ansonsten: Nehmt es einfach als "künstlerische Freiheit des Entwicklers" hin
Hm, was genau an meinem Satz
Zitat
Der Begriff "Tupel" kommt letztlich aus der Mengenlehre und bezeichnet mathematisch gesehen Listen... mit definierten Eigenschaften => kann man auch in dem Wiki-Beitrag nachlesen.
hast du jetzt nicht verstanden? =(
Du scheinst es nicht zu kapieren, dass dies in PYTHON zwei unterschiedliche Datentypen sind.
Ist mittlerweile ziemlich OT. Anbei ein Link von mir dazu: http://stackoverflow.com/questions/6267…uples-in-python. Das Missverständnis liegt einfach in der unterschiedlichen Semantik in der Mathematik und in Python.
Jupp framp, ich schreib jetzt hier nix weiter zu dem Thema (Schade um die Zeit), ich hoffe nur, dem Thread-Opener konnte geholfen werden...
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!