timestamp conversion problem.


 
Thread Tools Search this Thread
Top Forums Programming timestamp conversion problem.
# 1  
Old 01-11-2010
timestamp conversion problem.

Hi all.

I have the following code:
Code:
#include<stdio.h>
#include<time.h>
int main()
{
      struct tm tm;
      time_t time = 1262322000; /*Jan, 01, 2010*/
      char temp[128];
      int i = 0;
      while(i < 4)
      {
            memset(temp, 0, 128);
            localtime_r(&time, &tm);
            strftime(temp, 16, "%G%m%d", &tm);
            printf("%s\n", temp);
            ++i;
            time += 86400;
       }
}

The output is:
20090101
20090102
20090103
20100104
Instead of:
20100101
20100102
20100103
20100104
here are the tm values after calling localtime_r for each iteration:
Code:
(gdb) p tm
$1 = {tm_sec = 0, tm_min = 0, tm_hour = 0, tm_mday = 1, tm_mon = 0, tm_year = 110, tm_wday = 5, tm_yday = 0, tm_isdst = 0, tm_gmtoff = -18000, 
  tm_zone = 0x1201080 "EST"}
$2 = {tm_sec = 0, tm_min = 0, tm_hour = 0, tm_mday = 2, tm_mon = 0, tm_year = 110, tm_wday = 6, tm_yday = 1, tm_isdst = 0, tm_gmtoff = -18000, 
  tm_zone = 0x1201080 "EST"}
$3 = {tm_sec = 0, tm_min = 0, tm_hour = 0, tm_mday = 3, tm_mon = 0, tm_year = 110, tm_wday = 0, tm_yday = 2, tm_isdst = 0, tm_gmtoff = -18000, 
  tm_zone = 0x1201080 "EST"}
$4 = {tm_sec = 0, tm_min = 0, tm_hour = 0, tm_mday = 4, tm_mon = 0, tm_year = 110, tm_wday = 1, tm_yday = 3, tm_isdst = 0, tm_gmtoff = -18000, 
  tm_zone = 0x1201080 "EST"}

tm_year is always 110.

Can anyone explain what's going on here?
Why the year for first three iterations is 2009?
Thanks!

Last edited by pludi; 01-11-2010 at 03:13 AM.. Reason: added addtionial code tags
# 2  
Old 01-11-2010
Compare these two descriptions from the man page of strftime:
Quote:
%G is replaced by a year as a decimal number with century. This year is the one that contains the greater part of the week (Monday as the first day of the week).
%Y is replaced by the year with century as a decimal number.
Notice the (subtle) difference? %G will format the year as the one that has the Monday of the Week, which in your case is the last week of 2009 (2009-12-28 to be exact). Change your %G to %Y, and you'll be fine.
# 3  
Old 01-11-2010
Quote:
Originally Posted by pludi
Change your %G to %Y, and you'll be fine.
Thanks a lot!! It fixed the problem!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Timestamp conversion

Hello All, I have a file with many timestamps as in below format & example: 20150130105120 2015-> Year in YYYY 01-> Month in MM 30-> Day in DD 10-> Hour in HH 51-> Minute in mm 20-> Seconds in SS This is in GMT. I want to convert all these time stamps in GMT+5:30 format.. Can... (4 Replies)
Discussion started by: ailnilanjan
4 Replies

2. Shell Programming and Scripting

GMT to MST timestamp conversion

Hi Team, We have written a perl script to perform the GMT to MST timestamp conversion. Input: 2013-12-01T05:23:19.374 Output: need the given timestamp in MT (MST/MDT) #!/usr/bin/perl use strict; use warnings; use Time::Local; #always gmt #my $tval = '2013-12-01T05:23:19.374'; ... (4 Replies)
Discussion started by: kmanivan82
4 Replies

3. Shell Programming and Scripting

Timestamp conversion in PERL

Hi, I have a file as below I need to overwrite the 2 nd column alone to numeric format like "06122011030414012345" as per the timestamp value output file should be the microseconds can be neglected if required. Any help will be appreciated. Thanks in advance (1 Reply)
Discussion started by: irudayaraj
1 Replies

4. Shell Programming and Scripting

Epoch & Unix Timestamp Conversion Tools

Hi All, Please read the below data carefully. I need an unix command for converting unix timestamp to Epoch timestamp. I need to daily convert this today's unix(UTC) time to epoch time, so i am thinking to make a shellscript for this. Please help me for this by providing... (3 Replies)
Discussion started by: aish11
3 Replies

5. AIX

Need timestamp conversion shell script !!

Can anyone provide me with a ksh or bash script which will accept a timestamp (format is YYYY-MM-DD-HH24.Mi.Ss) and time offset (in hours). The output will be (timestamp passed - time offset passed deducted from it) in the same YYYY-MM-DD-HH24.Mi.Ss format. Basically I am trying to convert the... (1 Reply)
Discussion started by: shibajighosh
1 Replies

6. Shell Programming and Scripting

[Perl] Timestamp conversion

Hi, I have searched, read and tried, but no luck. I have this code: #!/bin/perl -w #-d use strict; use POSIX qw(strftime); my $getprpw_list="/usr/lbin/getprpw -l"; my $host = "nbsol151"; my $user = "genadmin"; my %uid; my %spwchg; my %upwchg; my %slogint; (2 Replies)
Discussion started by: ejdv
2 Replies

7. Shell Programming and Scripting

conversion of different timestamp to standard timestamp

hi i need a scrit to convert one date format to another. for example i have three columns in a file which gets a different format, but lastly i want output with stadard timestamp as "yyyy-mm-dd hh:mm:ss" column1 column2 ... (2 Replies)
Discussion started by: dprakash
2 Replies

8. Shell Programming and Scripting

Timestamp to date conversion in ksh

Hi, I have a file containing timestamp( Example given below). How can i get date(mmd-dd-yyyy) from it? ($> cat file1.txt 2008-11-24 05:17:00.7043) Thanks, Sri (2 Replies)
Discussion started by: srilaxmi
2 Replies

9. Shell Programming and Scripting

conversion from EPOCH timestamp to local time zone

hello gurus, i want a perl/shell script which once invoked should convert a set of EPOCH timestamps to local time ( IST..i want) . how does it work ,i have an idea on that..but writing a perl/shell script for it is not possible for me...so i need help for the same. my exact requirement is... (2 Replies)
Discussion started by: abhijeetkul
2 Replies

10. UNIX for Dummies Questions & Answers

Conversion Problem

hi, i am reading a string values from a file.the values are 2000 20000 300 10 5000 now retrieving each value one by one and printing if they are greater than 1000. i use this statement for the same (in perl script) if ($_ gt 1000){ print $_ } but its now prininting all... (3 Replies)
Discussion started by: vivekshankar
3 Replies
Login or Register to Ask a Question