From dd6f973d5c4be92f8eaf124cb841e3b02076adef Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 12 Jul 2014 08:10:22 +0100 Subject: [PATCH] ffi/unsafe/com: convert to `date*`, document limitations Merge to v6.1 along with 7d65ee6127. (cherry picked from commit 689f449c8de2dd911ba149e59ae784e5572b7302) --- .../scribblings/foreign/com-auto.scrbl | 4 +++- racket/collects/ffi/unsafe/com.rkt | 22 ++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/foreign/com-auto.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/foreign/com-auto.scrbl index 6d38f165e0..06685ea420 100644 --- a/pkgs/racket-pkgs/racket-doc/scribblings/foreign/com-auto.scrbl +++ b/pkgs/racket-pkgs/racket-doc/scribblings/foreign/com-auto.scrbl @@ -449,7 +449,9 @@ used to represent various atomic types: @item{@racket['string] --- a string} - @item{@racket['date] --- a @racket[date] or @racket[date*]} + @item{@racket['date] --- a @racket[date] or @racket[date*]; when converting to + a @racket[date*], the timezone is reported as @racket["UTC"] and the + @racket[year-day] field is @racket[0]} @item{@racket['com-object] --- a @tech{COM object} as in @racket[com-object?]} diff --git a/racket/collects/ffi/unsafe/com.rkt b/racket/collects/ffi/unsafe/com.rkt index 7c349181a7..c728be74f4 100644 --- a/racket/collects/ffi/unsafe/com.rkt +++ b/racket/collects/ffi/unsafe/com.rkt @@ -1447,16 +1447,18 @@ (define s (make-SYSTEMTIME 0 0 0 0 0 0 0 0)) (unless (not (zero? (VariantTimeToSystemTime d s))) (error 'date "error converting date from COM date")) - (date (SYSTEMTIME-wSecond s) - (SYSTEMTIME-wMinute s) - (SYSTEMTIME-wHour s) - (SYSTEMTIME-wDay s) - (SYSTEMTIME-wMonth s) - (SYSTEMTIME-wYear s) - (SYSTEMTIME-wDayOfWeek s) - 0 - #f - 0)))) + (date* (SYSTEMTIME-wSecond s) + (SYSTEMTIME-wMinute s) + (SYSTEMTIME-wHour s) + (SYSTEMTIME-wDay s) + (SYSTEMTIME-wMonth s) + (SYSTEMTIME-wYear s) + (SYSTEMTIME-wDayOfWeek s) + 0 + #f + 0 + (* 1000 (SYSTEMTIME-wMilliseconds s)) + "UTC")))) (define _currency (make-ctype _CY