If you are interested to convert a time column in a data file you should
immediately read about cal2dy
Another possibility to convert time records, however more adequate for equal-spaced time-series is with tslist
All the commands below explain themselves if you call them by
calrect - regularize kalendar date, pick a parameter, reformat, etc.
calrect [options] year month day
Parse and reformat kalendar data.
Month may be numeric or a three-character string.
A date like 99 FEB 29 will be converted to 99 MAR 01,
99 DEC 32 to 00 JAN 01 etc.
-[y][m][d] or any permutation indicates the requested ordering of output
Year Month Day. n and m are treated synonymously.
M or C instead of m requests three-character month,
C in capitals. Specify -y to print only the year, etc.
-s[d] d signifies
a delimiter for the output. Default is none.
To enter a blank, use -s or -s" "
-f[str] Formatted input. Format
code str. Outer parenthesis can be skipped.
Default (i4,i3,i2), which is suitable also for
3-character months. Needed if date is given without delimiters.
value v to be added to the date. Can be given with a blank
calrect -yCd 99 dec 32
calrect -yCd 1999 dec 32
Both produce 2000JAN01.
calrect -s" " -a 1 -yCd 99 dec 31
calrect -s" " -yCd 99 dec 32
calrect -s -yCd 99,dec,32
calrect -s -yCd -f 1999dec32
calrect -s -yCd -f'(i2,i3,i2)' 99dec32
calrect -s -yCd 99 0 366
calrect -s -yCd 99 1 366
All produce 2000 JAN 01.
calrect -s -Md 1999 0 89
produces mar 30
cal2yd year doy or cal2yd year month day
alternates date form, "doy" is day-of-year number (1..366).
(no space) is possible. 1900 will be added to years less than 100.
-c delimiter One character, to split off a heading string, example:
cal2dy -c: string:199810
will split off string until ':' and return 1998 01 10
-d delimiter One
character, to delimit between parts of the date
cal2dy -d- year-month-day
will divide string at '-'
cal2dy -d. year.doy
will divide string at '.'
JD - Julian date conversion
Usage: JD [-dr |-M|-R] y m d
Converts date to Julian days, assuming UT 00:00:00 that day
Year may by given in two digits in which case 1900 will be added
-dr - r defines a reference Julian Day.
-M - return MJD (remove 2,400,000.5 JD)
-R - return RJD (remove 2,400,000.0 JD)
-d, -R, and -M are mutually exclusive.
set RD=`JD 1950,1,1`
JD -d$RD 1998,1,13
There is a much better routine: JDC
JDC - Julian date conversion
JDC options date
PURPOSE: Convert Julian date to Kalendar or vice versa
-j x - x is a Julian date, convert to kalendar form.
-d yyyy mm dd [h [m [s [f]]]]
- convert kalendar to Julian
-n# -j x - output month in character form. #: Specify number,
position in string 
-N - like -n, upper case however
-m -r - modified resp. reduced Julian
-s - kalendar form is yyyy mm dd s (s=seconds, floating point)
-h - kalendar form is yyyy mm dd h (h=hours, floating point)
-k# - a number 0 to 4 specifies h m s f part depth. 
-f fmt - fmt is Fortran format code for kalendar output.
Avoid the outer parentesis. Defaults exist
-y2k - Add 1900 to the year if greater than 50, else 2000.
-y2k# - Specify a year # 0..99 for the break. 
If the date part on the command line is empty,
the program will try input from <stdin>
cal2dy - calendar to decimal conversion, from STDIN to STDOUT
Purpose: Reads a record with date in calendar form and outputs
the same record but with date in decimal years in column 1.
Reads from stdin, writes to stdout.
Def.: Calender form is [YY]YY MM DD H M S m
Months coded in character*3
form are always converted to numeric
form, 3 places, 2 digits, right-adjusted, i.e. in fortran speak I3.2 .
The input time record
may be one of several kinds. The normal calendar
Options: (optional parameters within [ ])
-db Debug option.
-Ty,m,d Input time record is hours from epoch.
Use this option
to specify the epoch date (year,month,day)
-J[d] Input time record is Reduced
Julian Date. Add another d days.
-Jh[d] ... Modified Julian Date ...
-c Output date is calendar (meaningful only under -J)
-j[d] Output date is RJD; subtract d before output.
You may use program JD to find out a suitable d.
-jh[d] Output date is MJD...
-Cj,k Specifies date part to be contained between positions
j and k of input record. Position j must contain a digit.
Default = 2 11
-I[str] Read date formatted, str is fortran
format code except
surrounding ( ). Default format = 1x,i4,2i2.
Is needed if dates are coded without space.
-S Suppress records which fail processing of date.
-Kk Process k
columns of the H M S m part (1 <= k <= 4),
-Dstr Substitution string for a missing H M S m part.
-Fstr Output format code for decimal year; default = 'F12.6'.
_date (command line) convert this
date to the other form. Stdin is not read.
Observe nonblank first column; is required but ignored.
Given a decimal _year, the procedure returns the calendar
date in a fixed
form. Option -M may be used to output month alphabetically.
Option -K is significant.
echo " 1996nov01:00 xxxyyyzzz" | cal2dy -C2,13 -K1 -II4,I3,i2,1x,i2