Sponsored Content
Full Discussion: Find Day of Week
Operating Systems HP-UX Find Day of Week Post 302731167 by rwuerth on Wednesday 14th of November 2012 10:54:49 AM
Old 11-14-2012
Find Day of Week

In HP-UX the date command does not have the "-d" switch like some other *nixes do. I'm working a simple script to tell me, given the day, month and year what day of the week that falls on.

Assuming valid day, month and year input (I'd perform quality checks on the input separately, but not shown here), would the following work for all dates? Or are there some corner cases that may not work correctly? I'm not worried about corner cases like way back in the 1500's when the Gregorian calendar 1st came online and how that might be screwed up.

The output is the output from a call to the 'cal' utility, plus the full name of the day of the week so that the named day of the week can be easily verified.

Code:
#!/bin/sh
day=$1
mth=$2
yr=$3
 
cal $mth $yr
 
set -A _WKDY Saturday Sunday Monday Tuesday Wednesday Thursday Friday
 
print ${_WKDY[$(cal $mth $yr | awk -vDD=$day 'FNR==3 {print ((7-$NF)+DD)%7}')]}

in awk,

Code:
FNR==3

means I skip the headers and am only concerned with the first week of the 'cal' output.

Breaking the math down:

Code:
(7-$NF)

Is an offset to "normalize" partial weeks since the first week of a month may have less than 7 days in it.

Code:
((7-$NF)+DD)

The offset is added to the numerical day of the month (DD)

Code:
((7-$NF)+DD)%7

The offset plus DD is then modded by 7 giving the numerical day of the week, of which, 0 is defined as Saturday, and 1-6 is defined as Sunday through Friday by how I set up the array.

I'm basically just wondering if anyone can break this given a modern date and valid inputs. (no using February 30th! :-) ) I can't break it, but I've a nagging suspicion I'm missing something. Smilie

TIA
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Calculating the day of the week

Hi all, I would like to calculate the day of the week using a supplied date. i.e. 20011012 = Day 5. Any ideas? Many thanks, ligs (4 Replies)
Discussion started by: ligs
4 Replies

2. Programming

Function that gets the day of the week (0-6) ??

Hi , I am working at Unix system,using c lang. I need c fun which return the day of the week . For example : 0- Sunday. 1- Monday. .... 10x. (4 Replies)
Discussion started by: kamil
4 Replies

3. Shell Programming and Scripting

Yesterday's Day of week

I need o get yesterday's day of week but im not exactly sure. the actual name is what i want. I can do it with numbers but im not sure with words. (3 Replies)
Discussion started by: rcunn87
3 Replies

4. UNIX for Dummies Questions & Answers

How to find Day of the Week from the given date (Perl)?

How to find the Day of the Week of the given Date using perl? If I have a date in YYY--MM-DD format, how to find the DOW? Based on that, I need to find the following sunday. Pls help. (5 Replies)
Discussion started by: deepakwins
5 Replies

5. HP-UX

Get Day of Week from date

Hi All, I have date in string format 'YYYY-MM-DD'. I want to know day of the week for this date. Example. For '2005-08-21' my script should return '0' or Sunday For '2005-08-22' it should return '1' or Monday I want piece of code for HP-UX korn shell. Appreciate reply on this. (5 Replies)
Discussion started by: vpapaiya
5 Replies

6. UNIX and Linux Applications

How to find 'Day of week' in Linux system

Hi All, I want to find a day of week for the Linux system. can some one help me on this.. Thanks in advance, Raji. (2 Replies)
Discussion started by: rajinavaneethan
2 Replies

7. Shell Programming and Scripting

Get day of week from cal

Hi all, I am trying to get dow from cal using below script #! /bin/bash YEAR=`echo $1 | cut -c 1-4` MONTH=`echo $1 | cut -c 5-6` DAY=`echo $1 | cut -c 7-8` for i in 1 2 3 4 5 6 7 do dayofweek=`cal $MONTH $YEAR | awk '$i == $DAY {printf("%s","$i")}'` echo $dayofweek... (4 Replies)
Discussion started by: bzylg
4 Replies

8. UNIX for Dummies Questions & Answers

Sudoers for one day per week?

I have been volunteered by my boss to be the sysadmin for our production redhat server. He asked me to tighten the security to avoid mishaps like "rm -f *" that occured not long ago. Right now, we have 53 users sudo-ing into the machine and it is an audit nightmare. I am wondering if it... (15 Replies)
Discussion started by: alan
15 Replies

9. Shell Programming and Scripting

Reading in MM/DD/YY, find Day of Week

Hi everyone, I have a shell script that merges many files down in to one, then removes unwanted lines, that part is working fine: #!/bin/bash FILES=/home/pi/temp/qbd/* for f in $FILES do echo "Processing $f file..." # take action on each file. $f store current file name echo... (9 Replies)
Discussion started by: gjws
9 Replies

10. Shell Programming and Scripting

Get the week's day

Hi All, I have the below requirement , if i give the week number for ex 41 i need to get the date for Monday and thursday for this given week. my expected output is 13/10/2014 (Monday's date) and 16/10/2014 (Thursday's date) I am using GNU LINUX . Pls help me with your thoughts. Thanks in... (7 Replies)
Discussion started by: mohanalakshmi
7 Replies
NL_LANGINFO(3)						   BSD Library Functions Manual 					    NL_LANGINFO(3)

NAME
nl_langinfo -- get locale information LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <langinfo.h> char * nl_langinfo(nl_item item); DESCRIPTION
The nl_langinfo() function returns a pointer to a string containing information set by the program's locale. The names and values of item are defined in <langinfo.h>. The entries under Category indicate in which setlocale(3) category each item is defined. Constant Category Meaning CODESET LC_CTYPE Codeset name D_T_FMT LC_TIME String for formatting date and time D_FMT LC_TIME Date format string T_FMT LC_TIME Time format string T_FMT_AMPM LC_TIME A.M. or P.M. time format string AM_STR LC_TIME Ante-meridiem affix PM_STR LC_TIME Post-meridiem affix DAY_1 LC_TIME Name of the first day of the week (e.g.: Sunday) DAY_2 LC_TIME Name of the second day of the week (e.g.: Monday) DAY_3 LC_TIME Name of the third day of the week (e.g.: Tuesday) DAY_4 LC_TIME Name of the fourth day of the week (e.g.: Wednesday) DAY_5 LC_TIME Name of the fifth day of the week (e.g.: Thursday) DAY_6 LC_TIME Name of the sixth day of the week (e.g.: Friday) DAY_7 LC_TIME Name of the seventh day of the week (e.g.: Saturday) ABDAY_1 LC_TIME Abbreviated name of the first day of the week ABDAY_2 LC_TIME Abbreviated name of the second day of the week ABDAY_3 LC_TIME Abbreviated name of the third day of the week ABDAY_4 LC_TIME Abbreviated name of the fourth day of the week ABDAY_5 LC_TIME Abbreviated name of the fifth day of the week ABDAY_6 LC_TIME Abbreviated name of the sixth day of the week ABDAY_7 LC_TIME Abbreviated name of the seventh day of the week MON_1 LC_TIME Name of the first month of the year MON_2 LC_TIME Name of the second month MON_3 LC_TIME Name of the third month MON_4 LC_TIME Name of the fourth month MON_5 LC_TIME Name of the fifth month MON_6 LC_TIME Name of the sixth month MON_7 LC_TIME Name of the seventh month MON_8 LC_TIME Name of the eighth month MON_9 LC_TIME Name of the ninth month MON_10 LC_TIME Name of the tenth month MON_11 LC_TIME Name of the eleventh month MON_12 LC_TIME Name of the twelfth month ABMON_1 LC_TIME Abbreviated name of the first month ABMON_2 LC_TIME Abbreviated name of the second month ABMON_3 LC_TIME Abbreviated name of the third month ABMON_4 LC_TIME Abbreviated name of the fourth month ABMON_5 LC_TIME Abbreviated name of the fifth month ABMON_6 LC_TIME Abbreviated name of the sixth month ABMON_7 LC_TIME Abbreviated name of the seventh month ABMON_8 LC_TIME Abbreviated name of the eighth month ABMON_9 LC_TIME Abbreviated name of the ninth month ABMON_10 LC_TIME Abbreviated name of the tenth month ABMON_11 LC_TIME Abbreviated name of the eleventh month ABMON_12 LC_TIME Abbreviated name of the twelfth month ERA LC_TIME Era description segments ERA_D_FMT LC_TIME Era date format string ERA_D_T_FMT LC_TIME Era date and time format string ERA_T_FMT LC_TIME Era time format string ALT_DIGITS LC_TIME Alternative symbols for digits RADIXCHAR LC_NUMERIC Radix character THOUSEP LC_NUMERIC Separator for thousands YESEXPR LC_MESSAGES Affirmative response expression NOEXPR LC_MESSAGES Negative response expression RETURN VALUES
nl_langinfo() returns a pointer to an empty string if item is invalid. EXAMPLES
The following example uses nl_langinfo() to obtain the date and time format for the current locale: #include <time.h> #include <langinfo.h> #include <locale.h> int main(void) { char datestring[100]; struct tm *tm; time_t t; char *ptr; t = time(NULL); tm = localtime(&t); (void)setlocale(LC_ALL, ""); ptr = nl_langinfo(D_T_FMT); strftime(datestring, sizeof(datestring), ptr, tm); printf("%s ", datestring); return (0); } SEE ALSO
setlocale(3), tm(3), nls(7) STANDARDS
The nl_langinfo() function conforms to IEEE Std 1003.1-2001 (``POSIX.1''). HISTORY
The nl_langinfo() function appeared in NetBSD 1.0. BSD
April 14, 2011 BSD
All times are GMT -4. The time now is 10:04 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy