in reply to Re: Formatting Win32::OLE::Variant Dates
in thread Formatting Win32::OLE::Variant Dates

Well of course not! 2038 is unbelievably so far off in the future it will never happen.

I will of course be living out my retirement at that point, so of course I wash my hands of the whole affair... besides all these young programmers need something to occupy themselves.

Seriously though, I took your idea and played around a bit and came up with the following:

#! /usr/bin/perl -w use strict; use Win32::OLE::Variant; use Win32::OLE::NLS qw/ :LOCALE :DATE /; my $v = Win32::OLE::Variant->new(VT_DATE, shift || 'Sep 3,2001'); print $v->Date( 'yyyy/MM/dd' ), "\n"; print $v->Number( {ThousandSep => '', DecimalSep => '.'}), "\n";

plugging in some values, we get:

E:\david\perl>perl wov.pl "Sep 3,2001" 2001/09/03 37137.00 E:\david\perl>perl wov.pl "Jan 1,1900" 1900/01/01 2.00 E:\david\perl>perl wov.pl "Jan 2,1900" 1900/01/02 3.00 E:\david\perl>perl wov.pl "Jan 3,1900" 1900/01/03 4.00

So it appears that it will be possible to coax this into an epoch value. Thanks for the pointer.

update: it works. I'm not sure how I missed this first time around, because I did play with the Time method... As it turns out, the Date and Time methods don't display the value as a date or time, but rather, they display the date or time component of the value. This means that if you want to build up a reasonable timestamp, you merely have to do the following:

  my $t = $v->Date( 'yyyy/MM/dd ' ) . $v->Time( 'HH:mm:ss' );
--
g r i n d e r