Linux Shell Script - Date format not working [duplicate] - linux

This question already has answers here:
GNU date and custom formats
(2 answers)
Closed 4 years ago.
I am getting date in following format from a system and I need to use it for calculating some time difference.
Input format - 30-MAR-18 01.40.04.812030 AM PST
I am using following code but I am getting format errors.
#!/usr/bin
start_string="30-MAR-18 01.40.04.812030 AM PST"
TZ=GMT date --date="$start_string" "+%s"
#Above line is just to convert into seconds and print
This throws the error "date: invalid date β€˜30-MAR-18 01.40.04.812030 AM PST’"
I am lost on how to convert this into date format and then use it.
All help appreciated.
This is different from question asked here because I am dealing with an input that has a "." and not a ":" as the time separator.

Give the format like this:
start_string="30-MAR-18 01:40:04.812030 AM PST"

Related

Converting Dates - What format is 20130606T083000.093660900? [duplicate]

This question already has an answer here:
How to convert string format date yyyymmddThhmmss.sss to date in Bash?
(1 answer)
Closed 6 months ago.
Bit of an issue with date formatting:
Looking to format this date format " 20130606T083000.093660900 "
2013 06 06 T 08 30 00. 093660900
YYYY MM DD T HH MM SS NANOSECS
Formatting this into Epoch (which I believe is the second time given below without decimals) time would be great, I don't have much experience working with date time and changing them.
My goal is to realistically subtract
20130606T083000.093660900 FROM 1370507400093660900
Any help with even telling me what format the first date is, as it is apparently NOT ISO 8601, thanks!
You can use sed to convert the input to something GNU date can parse, then use GNU date to convert it to the format of the other date. Then compare:
din='20130606T083000.093660900'
dcmp='1370507400093660900'
dstr=$(sed 's/\(..\)\(..\)T\(..\)\(..\)/-\1-\2T\3:\4:/' <<<"$din")
timestamp=$(TZ=UTC0 date +%s%N --date="$dstr")
diff=$(( dcmp - timestamp ))
# diff is now: 0
I have forced timezone to avoid localisation concerns.

How to convert a bash string to date format? [duplicate]

This question already has answers here:
How to convert YYYYMMDDHHMMSS to a date readable by `date`
(6 answers)
Closed 10 months ago.
I have a bash string 20220416124334 (the string is not epoch) and I want to convert it to date format so it should look like this: 2022/04/16 12:43:34
I've tried:
[manjaro#manjaro ~]$ date -d '20220416124334' "+%Y/%m/%d %H:%M:%S"
date: invalid date β€˜20220416124334’
How should I do it correctly ?
I would expect to use the date command, as you employ it, with a number that represents the number of seconds since the epoch. It seems your number is a formatted date yyyymmddhhmiss.
If you don't need to validate the string that represents a formatted date, then you can use sed to insert extra formatting characters:
echo '20220416124334' | sed -E 's/(....)(..)(..)(..)(..)(..)/\1\/\2\/\3 \4:\5:\6/'
If you end up taking as input a number of seconds since the epoch, then do it this way, keeping in mind that a number means different times in different time zones at different times of the year (eyeroll):
date -u -r 1650113014 "+%Y/%m/%d %H:%M:%S"

Reformat date in python [duplicate]

This question already has answers here:
Converting a string to a formatted date-time string using Python
(5 answers)
Closed 5 years ago.
I am having the current format date 02/16/18 3:33:39PM. How could I use python programming to change it for Year-Month-Day?
You can try this. Convert your date to a datatime object and then do whatever you want from there

Converting UTC timestamp to a time value? [duplicate]

This question already has answers here:
Excel date to Unix timestamp
(11 answers)
Closed 5 years ago.
I'm doing an exercise where I have data with several entries of this type:
"started_at": 1475499600.287,
Which is defined as:
started_at: when the interval started, UTC Time
Ok, how can I convert it to a meaningful time (using Excel, for example) in some format (e.g. dd/mm/yyyy hh:mm:ss)?
For translating into GMT, you can use
=(((A1/60)/60)/24)+DATE(1970,1,1)
Your example time will become 03/10/2016 13:00:00
Make sure to format the cell dd/mm/yyyy hh:mm:ss

Excel: transform TEXT like "YYYYMMDD" to DATE [duplicate]

This question already has answers here:
Excel Date Conversion from yyyymmdd to mm/dd/yyyy
(5 answers)
Closed 8 years ago.
How can I transform a column with text like "20130213" to DATE?
Basically, I need to calculate the difference in days between 2 dates that come in the text format
Thanks a lot
You can use for example
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))

Resources