Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datestring in Date konvertieren und damit rechnen

Frage Entwicklung Batch & Shell

Mitglied: LLIILLAA

LLIILLAA (Level 1) - Jetzt verbinden

07.10.2013 um 17:34 Uhr, 2370 Aufrufe, 2 Kommentare

Hallo Forum,

ich habe folgendes Problem:

[code]
[root@server]# date
So. 6. Okt 13:16:53 CEST 2013
[/code]

Date liefert mir ein aktuelle Datum!

Wenn ich dieses Datum aber von wo anders habe und von dem Date beispielsweise 7 Tage abziehen möchte, dachte ich, ich könnte so vorgehen:

[code]
[root@server]# date -d "So. 6. Okt 13:16:53 CEST 2013 -7 day" +"%a. %e. %b %R:%M:%S %Z %Y"
date: ungültiges Datum „So. 6. Okt 13:16:53 CEST 2013 -7 day“
[/code]

Leider bekomme ich immer die folgende Fehlermeldung.
Ich weiß nicht genau, wie ich die Formatierung richtig angehen muss.
Hat jemand eine Idee?

Schöne Grüße
Mitglied: colinardo
07.10.2013, aktualisiert um 22:52 Uhr
Hallo LLIILLAA,
date akzeptiert nicht beliebige Strings im Paarameter -d. Wie diese formatiert sein müssen steht hier. Vor allem akzeptiert es keine deutschen Datumsangaben wie Okt oder So sondern nur die englischen Equivalente;
Ein gültiges Datum könnte beispielsweise so aussehen:
date -d 'Sunday 6 Oct 2013 13:16:53.000000'
Du müsstest also deinen Date-String mit einem Script zerlegen und daraus ein gültiges Datum zusammenbauen, und dann damit rechnen.
Beispiel:
01.
#!/bin/bash 
02.
RAW_DATUM='So 6. Okt 13:16:53 CEST 2013' 
03.
WOCHENTAG=$(echo "$RAW_DATUM" | cut -d' ' -f1) 
04.
TAG=$(echo "$RAW_DATUM" | cut -d' ' -f2 |cut -d'.' -f1) 
05.
MONAT=$(echo "$RAW_DATUM" | cut -d' ' -f3) 
06.
ZEIT=$(echo "$RAW_DATUM" | cut -d' ' -f4) 
07.
ZONE=$(echo "$RAW_DATUM" | cut -d' ' -f5) 
08.
JAHR=$(echo "$RAW_DATUM" | cut -d' ' -f6) 
09.
 
10.
case "$WOCHENTAG" in 
11.
	'Mo') 
12.
	WOCHENTAG='Mon' 
13.
	;; 
14.
	'Di') 
15.
	WOCHENTAG='Tue' 
16.
	;; 
17.
	'Mi') 
18.
	WOCHENTAG='Wed' 
19.
	;; 
20.
	'Do') 
21.
	WOCHENTAG='Thu' 
22.
	;; 
23.
	'Fr') 
24.
	WOCHENTAG='Fri' 
25.
	;; 
26.
	'Sa') 
27.
	WOCHENTAG='Sat' 
28.
	;; 
29.
	'So') 
30.
	WOCHENTAG='Sun' 
31.
	;; 
32.
esac 
33.
case "$MONAT" in 
34.
	'Mär') 
35.
	MONAT='Mar' 
36.
	;; 
37.
	'Mai') 
38.
	MONAT='May' 
39.
	;; 
40.
	'Okt') 
41.
	MONAT='Oct' 
42.
	;; 
43.
	'Dez') 
44.
	MONAT='Dec' 
45.
	;; 
46.
esac 
47.
 
48.
date -d "$WOCHENTAG $TAG $MONAT $JAHR $ZEIT.000000 $ZONE - 7 days"
Alternativ kannst du dein Datum direkt im englischen Format ausgeben indem du die Sprach-Variable in der Shell vorher auf Englisch umstellst
LANG=en_US
und danach wieder auf Deutsch zurück:
LANG=de_DE.utf8
Grüße Uwe
Bitte warten ..
Mitglied: LLIILLAA
08.10.2013 um 08:13 Uhr
Hallo Uwe,

danke für deine Antwort.
Das ist sehr hilfreich.
Dann klappt das einfach leider so nicht....
Schade, ja dann werde ich das wohl irgendwie zerlegen müssen.

Schönen Tag
Bitte warten ..
Neuester Wissensbeitrag
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...