[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[UDUNITS #ODN-661035]: Problem converting date from hours units wrt a ref time
- Subject: [UDUNITS #ODN-661035]: Problem converting date from hours units wrt a ref time
- Date: Wed, 11 Jul 2012 09:27:40 -0600
Dear Prakash Barman,
> I need to convert time value present in a netcdf file, encoded in
> UDUNITS (hrs since 1900-01-01 00:00) to general "yyyy-mm-dd hh" format. The
> following code I am using. But what ever be the input, it always produces
> 2001 1 11 20 32 24.0 as output. Please help me in this regard....
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <udunits2.h>
>
> int main(void)
> {
> const char *ref_value = "hour since 1900-01-01 00:00:0.0";
>
> ut_system *u_system;
> ut_unit *u_unit;
> double time;
> int year, month, day, hour, minute;
> double second, resolution;
>
> if( (u_system = ut_read_xml(NULL)) == NULL ){
> fprintf(stderr, "Unable to initialize the udunits2 library!\n");
> exit(EXIT_FAILURE);
> }
>
> if( (u_unit = ut_parse(u_system, ref_value, UT_ASCII)) == NULL ){
> fprintf(stderr, "Unable to the unit string %s!\n", ref_value);
> exit(EXIT_FAILURE);
> }
>
> time = 937944;
>
>
> ut_decode_time(time, &year, &month, &day, &hour, &minute,
> &second,&resolution);
>
> printf("%4d %2d %2d %2d %2d %3.1f\n", year, month, day, hour,
> minute, second);
> return(EXIT_SUCCESS);
> }
You should use a true calendaring package to convert temporal values.
Having said that, you can use the UDUNITS-2 package to do approximately what
you want (the UDUNITS-2 package doesn't handle leap-seconds). Create a unit
that is "seconds since 1900-01-01 00:00:00". Obtain a converter from the
"hours" unit to the "seconds" unit. Convert values using this converter. Encode
a new value in the "seconds" unit by calling the function "ut_encode_time(1900,
1, 1, 0, 0, secondsSince19000101). Obtain the corresponding calendar time by
calling the function "ut_decode_time(encodedTime, &year, &month, &day, &hour,
&minute, &second, &resolution).
Yes, it's not very convenient. But I would prefer that a true calendaring
package be use for such conversions.
> Thanks
>
> Prakash Barman
> JRF, Dept. of Physics
> Tezpur University, Tezpur
Regards,
Steve Emmerson
Ticket Details
===================
Ticket ID: ODN-661035
Department: Support UDUNITS
Priority: Normal
Status: Closed