On 1/16/2012 06:22, Sven Barth wrote:
Am 16.01.2012 04:10 schrieb "waldo kitty" <wkitt...@windstream.net>
 >
 >
 > i'm needing to convert a "UTC epoch" date to a "standard time string"... by
 > that, i mean that i want to get something like "2011-01-13 22:24:04" out of
 > the "epoch" number 12013.9338171...

TYPO ALERT! that should be .93338171... with the additional '3' in there, the final value for the seconds is 4... long day, tired eyes and dirty glasses :/

[TRIM]
 > so, my question is this... is there an existing FPC routine that will convert
 > this (or a part of this) properly or do i need to play with something to get
 > it right? it is obvious that this is not a "unix epoch"... i'm not sure how
 > "normal" julian date epochs are represented...
 >
 > i've looked through the docs on freepascal.org <http://freepascal.org> but
 > none of them show an number with which to compare... there's no links 
pointing
 > to a definition or example of a julian date or unix date or any such...

I don't know whether your format is really a Julian or Unix time (for Julian it
looks too low),

it is actually one of the "julian" ones... it is the "julian day of year" format... at least that's what i believe it is called...

but can take a look at unit "DateUtils" of which the
documentation is here:
http://www.freepascal.org/docs-html/rtl/dateutils/index-5.html

yes, i had been all in there... that's where i was expecting to see an example that actually contained a number that would be converted to a date so that one might work out the math manually if desired... without a number, i had nothing to compare what i have with to see if it was even close...

Especially you can try JulianToDateTime and UnixToDateTime. Both return a
TDateTime which you can convert to a string using FormatDateTime
( http://www.freepascal.org/docs-html/rtl/sysutils/datetimetostring.html ) or
DateTimeToStr ( 
http://www.freepascal.org/docs-html/rtl/sysutils/datetimetostr.html ).

i think i might be able to do something with the JulianToDateTime once i get the base year portion converted to a true julian... i spotted some C# code while doing a bit of research earlier (see below)... it appears to convert the year to a julian year and then add the decimal day portion... this should then be a proper julian date which i should be able to handle ;)

[---- WARNING: C# code follows ----]
double getJulianDay_Year(int year)
{
    double dYear = year - 1;
    double A = Math.Floor(dYear / 100);
    double B = 2 - A + Math.Floor(A / 4);
//The use of 30.600000000000001 is to correct for floating point rounding problems
    double dResult = Math.Floor(365.25 * dYear) + 1721422.9 + B;
    return dResult;
}

double getJulianDay_SatEpoch(int year, double dSatelliteEpoch)
{
    //Tidy up the year and put it into the correct century
    year = year % 100;
    if (year < 57) year += 2000;
    else year += 1900;

    double dResult = getJulianDay_Year(year);
    dResult += dSatelliteEpoch;

    return dResult;
}
[---- end of C# code ----]

looks like it should be easy to convert to pascal, too ;) just gotta find out what that "floor" routine does ;)

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to