Datum & Uhrzeit im makefile für Dateinamen (Windows!)

Gast #3226334
Hallo Forum,

ich habe schon viel gesucht und finde nichts funktionierendes für 
Windows.
Im makefile möchte ich das zum Aufrufzeitpunkt aktuelle Datum und die 
Uhrzeit in einer Variable haben und dann an den Dateinamen anhängen.
Wie bekomme ich Datum und Uhrzeit in eine Variable?

Für Linux gibt es viele Beispiele, die ich aber nicht übertragen kann.
Gast #3227206
Make my date... schrieb:
> Das klappt bei mir nicht.
> Wenn ich folgendes mache:
>
> DATE = __DATE__
> OUTPUTNAME  = test_$(DATE)
>
> Kommt test___DATE__ heraus...

Um mal die ganz offensichtlichen Fragen zu stellen:

- was für ein Windows und deutsch oder englisch oder was?
- welches Make?

Sprache könnte wichtig sein weil sich die Formate von Datum/Zeit da 
unterscheiden.
Gast #3227324
Ok, das war mir nicht klar.

Also es handelt sich um ein Makefile für den avr-gcc (winavr-20100110) 
unter Windows 7 (64bit) Deutsch.

Wäre natürlich gut, wenn es unter XP und Win7 (32bit) und Englisch auch 
funktioniert. Wie man es für eine andere Sprache formatiert ist dann ja 
eigentlich ein weiterer Schritt. Wenn es anders aussieht ist ja nicht 
schlimm.
Zumindest scheint es aber grundsätzlich anders als unter Linux zu gehen, 
denn dazu finde ich viel, was aber unter Win nicht klappt.

make ist Version 3.81 built for i386-pc-mingw32

Danke!
#3227348
WinAvr bringt eine ganze Menge Linux Tools (mingw) mit, schau mal ob 
"date" dabei ist und dann erweitere %PATH% um den Pfad zu date

Im Makefile steht dann:
1
OUTPUTNAME=test_$(shell date +"%Y%M%d_%H%m")
2

3
foo:
4
    echo $(OUTPUTNAME)


__DATE__ und __TIME__ sind Preprozessor Macros, das Format eignet 
sich aber weniger zur Filenamensbildung:
1
echo __DATE__ __TIME__ | avr-gcc -E -
2
# 1 "<stdin>"
3
# 1 "<built-in>"
4
# 1 "<command-line>"
5
# 1 "<stdin>"
6
"Jul  4 2013" "09:00:46"
Gast #3227373
A. W. schrieb:
> OUTPUTNAME=test_$(shell date +"%Y%M%d_%H%m")

Wow, das funktionierte auf Anhieb. Komisch, mit date habe ich es schon 
probiert gehabt, aber ich glaube ohne das "shell".

Komisch ist nur, dass die Reihenfolge beim Datum nicht passt (Monat und 
Tag vertauscht) und die Zeit 2 Std und 20 Minuten daneben liegt.

Um 9:27 Uhr habe ich folgenden Output erhalten:
test_20132704_0707.hex

Hast du dazu noch eine Idee?
Gast #3227380
Hm, ne irgendwas stimmt da nicht. Die Zeit ist immer gleich und das 
Datum irgendwie falsch.

Um 9:36 Uhr am 4.07.2013 mit $(shell date +"%Y%M%d_%H%m")
test_20133604_0707.hex
Gast #3227458
"date --help" funktioniert leider nicht, das hatte ich auch schon 
versucht...
Aber weder ein Monat noch ein Tag 36 ergibt Sinn?!
Irgendwas ist da faul...
Gast #3227512
Komisch, dass die Hilfe nicht geht.
Nur am Rande: Googlen nach "Hilfe zu Date" ist nicht zielführend ;-)

Das Vertauchen von %m und %M sieht gut aus.
DATETIME = $(shell date +"%Y%m%d_%H%M")

Jetzt bin ich noch 2 Stunden daneben, vermutlich eine 
Zeitzonengeschichte.
Gast #3227547
Also angezeigt wird die Zeit als GMT Zeit.
Wir sind aber GMT +2 bei Sommerzeit und GMT +1 bei Winterzeit.
Kann man nicht die Zeit, die Windows darstellt herausbekommen?
Gast #3227575
#Sommerzeit +2, Winterzeit +1
DATETIME = $(shell date --date='GMT +2 hours' +"%Y%m%d_%H%M")

Das soll mir jetzt reichen.
Vielen Dank für die Hilfe!
Gast #3227579
Make my date... schrieb:
> Kann man nicht die Zeit, die Windows darstellt herausbekommen?

hat aber den nachteil das dann die Zeit nicht mehr eindeutig ist. Wenn 
du in der Nacht der umschaltung etwas erzeugst woher willst du wissen 
wann du es gemachst hast? Jeder Zeitpunkt gibt es dann immer 2mal.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.