[ale] Need to convert standard time to epoch in bash
Ned Williams
nedj10 at gmail.com
Tue Apr 17 13:58:34 EDT 2007
Hey guys,
The issue was that I cannot add perl to the enviroment I am working in but I
wound up doing the following:
ORIGINAL_DATE="Tue Apr 17 11:19:59 EDT 2007"
ORIGINAL_EPOCH=$(date -d "${ORIGINAL_DATE}" "+%s")
Thanks
Ned Williams
On 4/17/07, Jeff Lightner <jlightner at water.com> wrote:
>
> Is the issue that you don't want to write a full perl script or that you
> don't have perl at all?
>
> If it is the former you can do a one line command within your bash
> script:
> perl -e 'print scalar localtime $ARGV[0];print "\n"' <epoch time>
>
> BTW - The date '+%s' gives epoch from date not vice-versa.
>
> -----Original Message-----
> From: ale-bounces at ale.org [mailto:ale-bounces at ale.org] On Behalf Of Mike
> Fletcher
> Sent: Tuesday, April 17, 2007 12:54 PM
> To: Atlanta Linux Enthusiasts
> Subject: Re: [ale] Need to convert standard time to epoch in bash
>
> Christopher Fowler wrote:
> > Here it is no perl used!
> >
> > [cfowler at shuttle tmp]$ sh time.sh
> > 1176822360
> >
> > [cfowler at shuttle tmp]$ cat time.sh
> > #!/bin/sh
> >
> > cat >/tmp/ti.c << EOF
> > #include <time.h>
> >
> > int main(int argc, char **argv) {
> > struct tm t;
> > int ti;
> >
> > t.tm_mon = atoi(argv[1]) - 1;
> > t.tm_mday = atoi(argv[2]);
> > t.tm_year = atoi(argv[3]) - 1900;
> > t.tm_hour = atoi(argv[4]);
> > t.tm_min = atoi(argv[5]);
> > t.tm_sec = atoi(argv[6]);
> > t.tm_isdst = 1;
> >
> > ti = mktime(&t);
> > printf("%d\n", ti);
> >
> >
> > }
> > EOF
> >
>
> Ouch. If you're going to drop down into C at least use the standard
> library functions . . .
>
> /*
> *
> * etad -- Reverse output from date(1) into a time_t
> *
> * gcc -o etad etad.c
> *
> */
> #include <unistd.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <time.h>
>
> int main( int argc, char **argv ) {
> struct tm *parsed_tm = malloc( sizeof(struct tm) );
> time_t epoch_time;
>
> if( argc != 2 ) {
> fprintf( stderr, "usage: %s TIME\n", argv[0] );
> exit( 1 );
> }
>
> if( strptime( argv[1], "%a %b %e %H:%M:%S %Z %Y", parsed_tm ) == NULL
> ) {
> fprintf( stderr, "error parsing time string '%s'\n", argv[1] );
> exit( 1 );
> }
>
> epoch_time = mktime( parsed_tm );
>
> free( parsed_tm );
>
> fprintf( stdout, "%d\n", epoch_time);
>
> exit( 0 );
> }
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Ale
mailing list