09-09-2005
calcuate the week number of a given date
Hi All,
can any one help me fix the error in this - i am still a novice in shell programming. I got this code after some googling now the code works with all the dates( as much as i know) except for 08 th and 09th of every month. can any one of you please help me fix this issue?
Thanks in advance.
Quote:
# !/bin/ksh
calcweek() {
if [ $LEAP -eq 0 ] ; then
set -A DIM 0 0 31 59 90 120 151 181 212 243 273 304 334
else
set -A DIM 0 0 31 60 91 121 152 182 213 244 274 305 335
fi
((JDAY=DIM[$MM]+DD))
((WEEK=(JDAY+$1)/7))
echo $YEAR-$WEEK
}
MM=$1
DD=$2
YEAR=$3
MMDD=$MM$DD
typeset -Z2 WEEK
((YEAR%100)) && ((LEAP=!(YEAR%4))) || ((LEAP=!(YEAR%400)))
cal 01 $YEAR |
awk '{getline;getline;print NF;exit}' |
read W1K
case $W1K$LEAP in
70) echo '0101 52 9999 5' ;;
10) echo '0102 XX 9999 4' ;;
20) echo '0103 53 9999 3' ;;
30) echo '0000 00 9999 9' ;;
40) echo '0000 00 1229 8' ;;
50) echo '0000 00 1230 7' ;;
60) echo '0000 00 1231 6' ;;
71) echo '0101 52 1231 5' ;;
11) echo '0102 52 9999 4' ;;
21) echo '0103 53 9999 3' ;;
31) echo '0000 00 9999 9' ;;
41) echo '0000 00 9999 8' ;;
51) echo '0000 00 1229 7' ;;
61) echo '0000 00 1230 6' ;;
esac | read JCUT PWK DCUT ADJ
if [ $MMDD -le $JCUT ] ; then
if [ $PWK = 'XX' ] ; then
((PYEAR=YEAR-1))
((PYEAR%100)) && ((PLEAP=!(PYEAR%4))) || ((PLEAP=!
(PYEAR%400)))
((PWK=52+PLEAP))
fi
echo $((YEAR=YEAR-1))-$PWK
else
if [ $MMDD -ge $DCUT ] ; then
echo $((YEAR=YEAR+1))-01
else
calcweek $ADJ
fi
fi
exit 0
7 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
does anybody know how to format `date` command correctly to return the day of the week? Thanks -A
I work in ksh.... (1 Reply)
Discussion started by: aoussenko
1 Replies
2. Shell Programming and Scripting
Hi all,
I've used various scripts in the past to work out the date last week from the current date, however I now have a need to work out the date 1 week from a given date.
So for example, if I have a date of the 23rd July 2010, I would like a script that can work out that one week back was... (4 Replies)
Discussion started by: Donkey25
4 Replies
3. Shell Programming and Scripting
Hi,
I tried to find the solution on the forum without success.
datecalc from Perderabo doesn't solve my problem.
I would like to know how to do the same thing that date +%U but for a specific date.
For example:
2011 08 27
=> 39
Thinks a lot (8 Replies)
Discussion started by: Castelior
8 Replies
4. Shell Programming and Scripting
Hi All,
what i want to do in perl is i should give the date at run time .Suppose date given is 23/12/2011(mm/dd/yyyy) the perl script shold find week start date, week end date, previous week start date,end date,next week start date, end date. In this case
week start date will be-:12/19/2011... (2 Replies)
Discussion started by: parthmittal2007
2 Replies
5. Shell Programming and Scripting
Hi,
How can we get the week number from any paricular date. lets say date is 20120404 (YYYYMMDD) then how to get the week number?
date +%W --- Thic command gives the week number for current date only.
Thanks. (13 Replies)
Discussion started by: 46019
13 Replies
6. AIX
Hi anyone can help?
How to calculate total number of weeks from a specify date, for example, 01 Jan 2012.
Thx!
https://www.unix.com/images/misc/progress.gif (1 Reply)
Discussion started by: rayray2013
1 Replies
7. Shell Programming and Scripting
Hi all,
Need an urgent help on the below scenario.
script:
awk -F","
'BEGIN { #some variable assignment}
{ #some calculation and put values in array}
END {
year=#getting it from array and assume this will be 2014
month=#getting it from array and this will be 05
date=#... (7 Replies)
Discussion started by: vijaidhas
7 Replies
DP(8) [nmh-1.5] DP(8)
NAME
dp - parse dates 822-style
SYNOPSIS
/usr/lib/mh/dp [-form formatfile] [-format string] [-width columns] [-version] [-help] dates ...
DESCRIPTION
Dp is a program that parses dates according to the ARPA Internet standard. It also understands many non-standard formats, such as those
produced by TOPS-20 sites and some UNIX sites using ctime(3). It is useful for seeing how nmh will interpret a date.
The dp program treats each argument as a single date, and prints the date out in the official 822-format. Hence, it is usually best to
enclose each argument in quotes for the shell.
To override the output format used by dp, the -format string or -format file switches are used. This permits individual fields of the
address to be extracted with ease. The string is simply a format string and the file is simply a format file. See mh-format(5) for the
details.
Here is the default format string used by dp:
%<(nodate{text})error: %{text}%|%(putstr(pretty{text}))%>
which says that if an error was detected, print the error, a `:', and the date in error. Otherwise, output the 822-proper format of the
date.
FILES
$HOME/.mh_profile The user profile
PROFILE COMPONENTS
None
SEE ALSO
ap(8), Standard for the Format of ARPA Internet Text Messages (RFC-822)
DEFAULTS
`-format' default as described above
`-width' default to the width of the terminal
CONTEXT
None
BUGS
The argument to the -format switch must be interpreted as a single token by the shell that invokes dp. Therefore, one must usually place
the argument to this switch inside quotes.
MH.6.8 11 June 2012 DP(8)