Date: invalid date trying to set Linux date in specific format

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Date: invalid date trying to set Linux date in specific format
# 1  
Old 01-14-2019
Date: invalid date trying to set Linux date in specific format

i try to set linux date & time in specific format but it keep giving me error
Example :
date "+%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01"

date +"%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01"

keep giving me this error :
date: invalid date ‘19-01-2017 00:05:01'

Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 01-14-2019 at 09:27 AM.. Reason: Added CODE tags.
# 2  
Old 01-14-2019
Dates specified with hyphens (-) as delimiters are assumed to be in ISO 8601 format, with the year first, therefore:
$ date "+%d-%m-%C%y %H:%M:%S" -d"2017-01-19 00:05:01"
19-01-2017 00:05:01

So basically 19-01-2017 does not conform to the expected format of [cc]yy-mm-dd and so was rejected.

You could use slashes (/) to delimit the day, month and year, unfortunately date will assume American date format:
$ date "+%d-%m-%C%y %H:%M:%S" -d "12/01/2017 00:05:01"
01-12-2017 00:05:01
$ date "+%d-%m-%C%y %H:%M:%S" -d "19/01/2017 00:05:01"
date: invalid date ‘19/01/2017 00:05:01'

Personally I would use the year-month-day format.

These 2 Users Gave Thanks to apmcd47 For This Post:
# 3  
Old 01-14-2019
those date are from some third party input so i guess i will need to change the format on the fly
# 4  
Old 01-14-2019
Be aware that date's + option specifies the output format, not a date string input template.

Do the date strings coming from third party come in a file, or immediately on stdout?
This User Gave Thanks to RudiC For This Post:
# 5  
Old 01-14-2019
immediately on stdout
by invoking remote ssh command
# 6  
Old 01-14-2019
Originally Posted by umen
immediately on stdout
by invoking remote ssh command
In this case use variable expansion to reformat it to your needs:

yourdate="$(ssh <your ssh-command)"
echo $yourdate
19-01-2017 00:05:01"

mytime="${yourdate#* }"         # extract "00:05:01"
yourdate="${yourdate% *}"       # remove time from date, leaving "19-01-2017"
myyear="${yourdate##*-}"        # extract the year "2017"
yourdate="${yourdate%-*}"       # remove "-${myyear}" from the date leaving "19-01"
mymonth="${yourdate##*-}"       # extract the month "01"
yourdate="${yourdate%-*}"       # remove "-${mymonth}" from the date leaving "19"

Using the variables set this way you can easily set your date using a different format.

I hope this helps.

This User Gave Thanks to bakunin For This Post:
# 7  
Old 01-14-2019
You might also, if your shell offers "here strings", try

$ IFS="- :" read DAY MTH YR HR MIN SEC <<< "$yourdate"
$ echo $DAY $MTH $YR $HR $MIN $SEC
19 01 2017 00 05 01
$ date -d"$YR-$MTH-$DAY $HR:$MIN:$SEC"
Do 19. Jan 00:05:01 CET 2017

This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Rename all Files in a UNIX Directory from one date format to another date format

Hi Unix Gurus, I would like to rename several files in a Unix Directory . The filenames can have more than 1 underscore ( _ ) and the last underscore is always followed by a date in the format mmddyyyy. The Extension of the files can be .txt or .pdf or .xls etc and is case insensitive ie... (1 Reply)
Discussion started by: pchegoor
1 Replies

2. Shell Programming and Scripting

finding date numeral from file and check the validity of date format

hi there I have file names in different format as below triss_20111117_fxcb.csv triss_fxcb_20111117.csv xpnl_hypo_reu_miplvdone_11172011.csv xpnl_hypo_reu_miplvdone_11-17-2011.csv xpnl_hypo_reu_miplvdone_20111117.csv xpnl_hypo_reu_miplvdone_20111117xfb.csv... (10 Replies)
Discussion started by: manas_ranjan
10 Replies

3. UNIX for Dummies Questions & Answers

Shell Scripts - shows today’s date and time in a better format than ‘date’ (Uses positional paramete

Hello, I am trying to show today's date and time in a better format than ‘date' (Using positional parameters). I found a command mktime and am wondering if this is the best command to use or will this also show me the time elapse since 1/30/70? Any help would be greatly appreciated, Thanks... (3 Replies)
Discussion started by: citizencro
3 Replies

4. Shell Programming and Scripting

Date after 5 days from current date in YYYYMMDD format

Hello Experts, How do i get date after 5 days from current date in YYYYMMDD format? How do you compare date in YYYYMMDD format? Thanks (8 Replies)
Discussion started by: needyourhelp10
8 Replies

5. Shell Programming and Scripting

How to increment a user defined date value in the DATE format itself using shell script?

I need to increment a date value through shell script. Input value consist of start date and end date in DATE format of unix. For eg. I need increment a date value of 1/1/09 to 31/12/09 i.e for a whole yr. The output must look like 1/1/09 2/2/09 . . . 31/1/09 . . 1/2/09 . 28/2/09... (1 Reply)
Discussion started by: sunil087
1 Replies

6. Shell Programming and Scripting

Set system date to some date (Sunos)

I am testing a script and need to change the system date to Nov 30 2009. I cannot seem to find a way to do this other than TZ command but it does not seem to work correctly. I tried TZ=GMT+168 date but it is returning todays date Mon Dec 7 19:48:11 GMT 2009 ...instead of Nov 30 2009 I... (4 Replies)
Discussion started by: hanton
4 Replies

7. UNIX for Dummies Questions & Answers

Changing from Excel date format to MySQL date format

I have a list of dates in the following format: mm/dd/yyyy and want to change these to the MySQL standard format: yyyy-mm-dd. The dates in the original file may or may not be zero padded, so April is sometimes "04" and other times simply "4". This is what I use to change the format: sed -i '' -e... (2 Replies)
Discussion started by: figaro
2 Replies

8. Shell Programming and Scripting

convert date format to mysql date format in log file

I have a comma delimited log file which has the date as MM/DD/YY in the 2nd column, and HH:MM:SS in the 3rd column. I need to change the date format to YYYY-MM-DD and merge it with the the time HH:MM:SS. How will I got about this? Sample input 02/27/09,23:52:31 02/27/09,23:52:52... (3 Replies)
Discussion started by: hazno
3 Replies

9. Shell Programming and Scripting

date: invalid date `19010101'

why date -d "19010101" gets error " date: invalid date `19010101' " but date -d "19020101" is fine? Any approach to fix that? Thank you. (8 Replies)
Discussion started by: freizl
8 Replies

10. UNIX for Advanced & Expert Users

date issue-find prevoius date in a patricular format

Hi , I have written a shell script that takes the current date on the server and stores it in a file. echo get /usr/home/data-`date '+%Y%d'`.xml> /usr/local/sandeep/GetFILE.ini I call this GetFILE.ini file from an sftp program to fetch a file from /usr/home/ as location. The file is in... (3 Replies)
Discussion started by: bsandeep_80
3 Replies
Login or Register to Ask a Question

Featured Tech Videos