Convert string (YYYYMMDD) format to date in Sun OS


 
Thread Tools Search this Thread
Operating Systems Solaris Convert string (YYYYMMDD) format to date in Sun OS
# 1  
Old 03-27-2018
Convert string (YYYYMMDD) format to date in Sun OS

Hi All

I need help in converting a string of YYYYMMDD format to date in Sun OS and then find out if the day is a Wednesday or not. The "date -d" option is not working and your help is much appreciated.

The date command usage from the operating system we use here is as follows:
Quote:
usage:
date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
Thanks,
SK

Last edited by rbatte1; 03-29-2018 at 01:29 PM..
# 2  
Old 03-27-2018
what is the 'date' format?
Please be more specific.
This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 03-27-2018
Any format is OK, because I need to find out the day after that. I am only worried about getting the day (For example: Wednesday) from the string (YYYYMMDD) I am passing.
# 4  
Old 03-27-2018
This might be of interest or help:
General Purpose Date Script
Courtesy of Corona688.
EDIT:
A little bit of googling...
SunOS man pages : date (1)

Last edited by wisecracker; 03-27-2018 at 03:26 PM.. Reason: See above...
This User Gave Thanks to wisecracker For This Post:
# 5  
Old 03-27-2018
a bit verbose, but you could start here - isWed.sh:
Code:
#!/bin/bash

if [ ${#} -ne 1 ];then
   echo "invalid number of arguments : ${0} YYYYMMDD"
   exit 1
fi

d="${1}"
# wed from cal
dayOFweek=4

YEAR=${d%????}
DAY=${d#??????}
MON=${d#$YEAR}
MON=${MON%$DAY}
echo $YEAR/$MON/$DAY

dow=$(cal "${MON}" "${YEAR}" | awk -v day="${DAY}" '
  FNR==2 {split($0,daysA)}
  FNR > 2 {
    for(i=1; i <= NF; i++)
      if ( $i == day) {
        #printf("day->[%d] row->[%d]\n", $i, FNR-2)
        #printf("%d\n", (NF == 7 || FNR!=3) ? i-1 : i+(6-NF))
        printf("%d\n", (NF == 7 || FNR!=3) ? i : i+(6-NF)+1)
        exit
      }
  }
')

if [ ${dow} -eq ${dayOFweek} ]; then
   echo yes
else
   echo no
fi

isWed.sh 20180329
isWed.sh 20180328

Last edited by vgersh99; 03-27-2018 at 04:06 PM..
This User Gave Thanks to vgersh99 For This Post:
# 6  
Old 03-27-2018
there was a failure in this script:

Code:
bash-3.2$ ./isWed.sh 20180328
2018/03/28
awk: syntax error near line 1
awk: bailing out near line 1
./isWed.sh: line 31: [: -eq: unary operator expected
no

---------- Post updated at 04:26 PM ---------- Previous update was at 04:09 PM ----------

Found answer from the following thread:

awk: bailing out

Thanks a lot for your help.

Last edited by rbatte1; 03-29-2018 at 01:31 PM..
# 7  
Old 03-27-2018
You could do this with perl eg:

Code:
#!/bin/perl
use POSIX;
use Time::Local;

my ($yyyy, $mm, $dd) = (
   $ARGV[0] =~ /([0-9]{4}) ([0-9]{2}) ([0-9]{2})/x
);

eval {
   print strftime("%a\n", localtime(timelocal(0,0,0,$dd,$mm - 1,$yyyy)))
};
print "ERROR: Format is YYYYMMDD\n" if $@;


Or, for a bit if fun, you could use cal and nawk like this:

Code:
Y=${1%????}
M=${1#????}
D=${M#??}
M=${M%??}
cal $M $Y | nawk '/^[A-Z]/ { split($0, dayname, " ") } dayname[1] && match($0, wd) { print dayname[int((RSTART+2)/3)] ; exit }' wd=$D

Assumption here is that each day takes three vertical text columns like this so when we find a day in the cal output we can calculate the heading it is under:

Code:
     March 2018     
Su Mo Tu We Th Fr Sa
             1  2  3 
 4  5  6  7  8  9 10 
11 12 13 14 15 16 17 
18 19 20 21 22 23 24 
25 26 27 28 29 30 31

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert string (YYYYMMDD) format to date in Sun OS

Hi All I need help in converting a string of YYYYMMDD format to date in Sun OS and then find out if the day is a Wednesday or not. The "date -d" option is not working and your help is much appreciated. The date command usage from the operating system we use here is as follows: usage: ... (1 Reply)
Discussion started by: SK123
1 Replies

2. Shell Programming and Scripting

Convert string into date format

Hi, I am getting the below string as a input for date. 12/03/2013 11:02 AM I want to change this date as 03-DEC-2013 11:02 AM. Could you please help on this. Thanks Chelladurai (4 Replies)
Discussion started by: ckchelladurai
4 Replies

3. 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

4. Solaris

Date after 5 dates in YYYYMMDD format

Hi Experts, How to get date 5 days after current date in YYYYMMDD format? How do we compare date in YYYYMMDD format? Thanks (1 Reply)
Discussion started by: needyourhelp10
1 Replies

5. Shell Programming and Scripting

PERL String to Date (Custom format yyyymmdd to dd-mon-yyyy)

Hi All, I am learning PERL for one of the projects, and in one of these scripts, I read a flat text file and print in the terminal. The problem is, the text file has a date field. The format is yyyymmdd. I need to display this as dd-mon-yyyy. Any ideas to do this? Thanks a lot for the... (9 Replies)
Discussion started by: guruparan18
9 Replies

6. Shell Programming and Scripting

To convert a date(in string format) to unix timestamp

Hi All, I have a string like below. "Mar 31 2009" . I want to convert this to unix time . Also please let me know how to find the unix time for the above string minus one day. For Eg. if i have string "Mar 31 2009" i want to find the unix time stamp of "Mar 30 2009". Thanks in advance,... (11 Replies)
Discussion started by: girish.raos
11 Replies

7. Shell Programming and Scripting

convert date format YYYYMMDD to MM/DD/YYYY

In my shell script i have a variable which stores date in the format of YYYYMMDD. Is there any way to format this value to MM/DD/YYYY. Thanks. (8 Replies)
Discussion started by: nasirgondal
8 Replies

8. UNIX for Dummies Questions & Answers

Format date from MM/DD/YYYY to YYYYMMDD

I have a file with some date columns in MM/DD/YYYY format: SMPBR|DUP-DO NOT USE|NEW YORK||16105|BA5270715|6/6/2007 |MWERNER|109||||JOHN||SMITH|MD|72211118||||||74559|21 WILMINGTON RD||D|11/6/2003|SL# MD CONTACT-LIZ RICHARDS|||0|Y|N||1411458| And I want to convert the date format to: ... (5 Replies)
Discussion started by: ChicagoBlues
5 Replies

9. UNIX for Dummies Questions & Answers

how to convert the string YYYYMMDD into YYYY.MM.DD

how to convert the string YYYYMMDD into YYYY.MM.DD Please advice (1 Reply)
Discussion started by: spatra
1 Replies

10. UNIX for Dummies Questions & Answers

get yesterday date in yyyymmdd format

I would like to know how I could get a yesterday date in yyyymmdd e.g. today is 20011109, and I would like to get 20011108. Thank you!:confused: (2 Replies)
Discussion started by: hk_newbie
2 Replies
Login or Register to Ask a Question