Solved

Convert timestamp to epoch time and calculate hours plus conversion backwards

Posted on 2013-01-17
10
1,245 Views
Last Modified: 2013-01-18
Dear experts, after my last problem I stumbled upon another one.

I need to convert "dd.mm.yyyy:hh24:mi:ss" to epoch time and add some hours to it (e.g. 4h). This output has to be compared to the current time/date.

I need to do so in ksh or perl. Any hints are welcome.
0
Comment
Question by:skahlert2010
  • 6
  • 3
10 Comments
 

Expert Comment

by:sarathy_sri
Comment Utility
#! /usr/bin/perl
my @time = localtime(time);
print "@time\n";

print scalar localtime(time);
0
 
LVL 6

Expert Comment

by:deiaccord
Comment Utility
You should be able to use the perl DateTime module to do what you want

Here is a quick example that takes a date string in the format you specify and prints the difference in hours from the current datetime.

use DateTime;

$datestring = "15.06.2005:15:30:30";
$datestring =~ m#(\d{2})\.(\d{2})\.(\d{4})\:(\d{2})\:(\d{2})\:(\d{2})#;
my $dt = DateTime -> new ( year => $3, month => $2, day => $1,
				hour => $4, minute => $5, second => $6);
				
$dt->add(hours => 4);

my $cmp = DateTime->now()-$dt;
print $cmp->in_units('hours');

Open in new window

0
 

Author Comment

by:skahlert2010
Comment Utility
Hi sarathy_sri,

I only receive an error using that code ==> syntax error: `(' unexpected
0
 

Author Comment

by:skahlert2010
Comment Utility
@deiaccord.

I fear perl is not the best soltion as the Perl DateTime Package is not installed on my Solaris machine. The solution needs to be universal in order to be applied on various hosts.

Any idea how to solve it differently? In Ksh maybe?

Otherwise you solution looks promising without being able to test it! Sorry!
0
 
LVL 6

Accepted Solution

by:
deiaccord earned 500 total points
Comment Utility
I believe Time::Local is standard with most perl distributions so you should be able to use that to get the difference in epoc seconds though it's not quite as flexible.

use Time::Local;

$datestring = "15.06.2005:15:30:30";
$datestring =~ m#(\d{2})\.(\d{2})\.(\d{4})\:(\d{2})\:(\d{2})\:(\d{2})#;
$time = timelocal ($6,$5,$4,$1,$2-1,$3-1900); # seconds, mins, hours, mday, month (0-11), year (difference from 1900)
print "Difference is " . (time - $time) . " seconds\n";

Open in new window

0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:skahlert2010
Comment Utility
Hi deiaaccord,

thanks for your solution. I compiled a small perl script using your code and invoke it from within my shell script. However, I cannot pass a parameter to perl in order to bind $datestring.


In ksh:

/tmp/epoch.pl $LS

Open in new window

while LS equals "15.06.2005:15:30:30"

In Perl:

$datestring = $LS;

Open in new window


Do you have a hint?
0
 

Author Comment

by:skahlert2010
Comment Utility
It seems to work with:

$datestring = $ENV{'LS'};

Open in new window

0
 

Author Comment

by:skahlert2010
Comment Utility
Well unfortunately this works only if I export the Variable in ksh but not within the script.
Thus, the question is still open.
0
 
LVL 6

Expert Comment

by:deiaccord
Comment Utility
Glad you got it working, you could have also set it with the first argument to the script if you want to make it a more re-usable script

$datestring = $ARGV[0];

Open in new window

0
 

Author Closing Comment

by:skahlert2010
Comment Utility
Thanks a lot! Just what I needed! I appreciate your hint regarding passing the variable from ksh to perl with ARGV[n]!
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now