Date Manipulation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Date Manipulation
# 1  
Old 03-02-2010
Date Manipulation

I have a file with a field containing the following:


"7/3/2009 7:07:12 PM","xxxx"

I need to be able to split this field up into two into a different format with the time being converted into 24 hour:

so that i can get the following:

"20090307","19:07:12","xxxx"
# 2  
Old 03-02-2010
date +%Y%m%d This format will output like current date in the following format
20100302

date %R:%S will give 24_hour:minute:second
Example 15:09:52
# 3  
Old 03-02-2010
Thanks for the reply,

I have over 1000 different date and time formats, what you have said above if i did that in my script it would work of system date, how can i get it to read the actual date and time specified in the file
# 4  
Old 03-02-2010
Is your file format is fixed character length ???
# 5  
Old 03-02-2010
Simplified to understand...can be optimized.

Code:
#!/usr/bin/perl
$str='"7/3/2009 09:07:12 PM","xxxx"' ;
$str =~ s/\"//g ;
@arr=split(/,/, $str);
@datestr=split(/ /,$arr[0]);
@daystr=split(/\//,$datestr[0]);
@timearr=split(/:/, $datestr[1]);
$merid=$datestr[2];

if ($merid =~ m/PM/ )
{
	if ( $merid ge 10 ) {
           $hour = 12 + $timearr[0];
           }
        else {
           $hour= 24 - $timearr[0];
       }
}
else
{
$hour=$timearr[0];
}

if ($daystr[0] =~ m/\d\d/) {
       $month=$daystr[0];
  }
else
{
    $month="0".$daystr[0];
}
if ($daystr[1] =~ m/\d\d/) {
       $day=$daystr[1];
  }
else
{
    $day="0".$daystr[1];
}
$year=$daystr[2];

$daystr='"'.$year.$day.$month.'", ';
$timestr='"'.$hour.":".$timearr[1].":".$timearr[2].'", ';
$val='"'.$arr[1].'"';

printf("%s%s%s",$daystr,$timestr,$val,);


cheers,
Devaraj Takhellambam
# 6  
Old 03-02-2010
You can use the following script to read the data from file and printing it in the required format.

Code:
arr=`sed 's/"//g;s/,/ /g;' file`

for((i=0;i<${#arr[@]};i++))
do
date=`echo ${arr[$i]} | cut -d ' ' -f 1`

day=`echo $date | cut -d '/' -f 1`

mon=`echo $date | cut -d '/' -f 2`

year=`echo $date | cut -d '/' -f 3 `

time=`echo ${arr[$i]} | cut -d ' ' -f 2`

format=`echo ${arr[$i]} | cut -d ' ' -f 3`

data=`echo ${arr[$i]} | cut -d ' ' -f 4-`

hour=`echo $time | cut -d ':' -f 1 `

Minsec=`echo $time | cut -d ':' -f 2-`

if [[ $format == 'PM' ]]
then
let hour+=12
fi
mon=`printf "%02d" $mon`
day=`printf "%02d" $day`
echo \"$year$mon$day\",\"$hour:$Minsec\",\"$data\"
done

# 7  
Old 03-02-2010
thanks for all the replies,

vivekraj, i get a syntax error in your code

syntax error at line 12 : `((' unexpected

I'm using KSH (solaris)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date-Manipulation-1

Hallo Team I can perform the task manually but i would like to automate this process. ok here goes. I have a perl script which runs every Wednesday every week and the name of the script is check_19.pl This is how the script looks like : #!/usr/bin/perl -w #use strict; use DBI; #... (1 Reply)
Discussion started by: kekanap
1 Replies

2. Shell Programming and Scripting

Date manipulation

In my shell script I take date as a input parameter from command line in the format "21 Oct 2011" which would be date +'%d %b %Y' Now i need to do two things here. 1) Validate the date entered by user 2) Calculate yesterday's date from the input. So in this case it should be: "20 Oct 2011"... (9 Replies)
Discussion started by: davidtd
9 Replies

3. Shell Programming and Scripting

Date Manipulation and Comparision

Hi All, I want to generate quarter dates using awk or anything, by giving a dates as input for example : start_date=2010-01-01 end_date=2010-05-31 output should be: start_date end_date qtr 2010-01-01 2010-03-31 1 2010-04-01 2010-05-31 2 Example 2:... (1 Reply)
Discussion started by: sol_nov
1 Replies

4. Shell Programming and Scripting

Date manipulation

How can i print a future time, so i get current time by date "+%H:M" but how can i say add 20 minutes to the current time and display as I have just done for current time. (1 Reply)
Discussion started by: kelseyh
1 Replies

5. Shell Programming and Scripting

Date manipulation

Hi Gurus, How to minus 15 minuets from current system time. For example if current time is " Wed Oct 14 12:12:38 BST 2009", i need "Wed Oct 14 11:57:38 BST 2009" Thanks (2 Replies)
Discussion started by: kumarmani
2 Replies

6. UNIX for Dummies Questions & Answers

Date Manipulation with files

Hi, I have a timestamp stored in a variable start_time=17-JUL-2009 03:45, I need to search a file for this time stamp line by line (where each line has a time stamp in the file) if the time stamp is greater than the start_time variable value need to grep that line for a string and if the string... (2 Replies)
Discussion started by: happyrain
2 Replies

7. Shell Programming and Scripting

date manipulation

HI, I'm comparing my file date with the system date and if both the dates are equal I'm doing some operation. I use two variables for these two dates. I use the following command in my query. if .... But here the current date $cd shows 01 and filedate $fdate shows 1. The file is created on 1 of ... (6 Replies)
Discussion started by: pstanand
6 Replies

8. Shell Programming and Scripting

Manipulation of Date in Shell

Reuirement: I have a set of files ina diectory which has the name in format "WWW-YYYYmmDD" like, WWW-20070226. for 26th FEB 2007. Now I need to write a shell script which should move the files to directory named "old" in the same directory if date attached to file is 90 days prior to today's... (1 Reply)
Discussion started by: jnanesh.b
1 Replies

9. Shell Programming and Scripting

Date Manipulation

I need to achieve the following.....I seached the forum but could not find it... This is I have in a file... "CH","TIA","10/27/2006",000590 I need the date in the third field to be attached to fileas 20061027_test.txt How do I do it. (6 Replies)
Discussion started by: mgirinath
6 Replies

10. Shell Programming and Scripting

date manipulation

I'm writing a ksh script in which I want to present the user with a choice of choosing any of the last 15 days. i.e., a list like the following: 20040510 (today) 20040509 (yesterday) 20040508 . . . 20040426 Is there an easy way to produce the date from x number of days ago other than... (3 Replies)
Discussion started by: jalburger
3 Replies
Login or Register to Ask a Question