From 36d07f78e42b2d6210e571885bdfdfbb1f3f6f98 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 20 Dec 2011 21:27:09 +0000 Subject: [PATCH 1/1] Added helpers for translating between wxDateTime and NSDate. These functions will be used in the upcoming native implementations of wxDatePickerCtrl and wxTimePickerCtrl but could also be reused elsewhere in wxOSX/Cocoa, notably in wxDataViewCtrl where strange ad hoc code is currently used. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/cocoa/private/date.h | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/wx/osx/cocoa/private/date.h diff --git a/include/wx/osx/cocoa/private/date.h b/include/wx/osx/cocoa/private/date.h new file mode 100644 index 0000000000..a3776baea6 --- /dev/null +++ b/include/wx/osx/cocoa/private/date.h @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/osx/cocoa/private/date.h +// Purpose: NSDate-related helpers +// Author: Vadim Zeitlin +// Created: 2011-12-19 +// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $ +// Copyright: (c) 2011 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_OSX_COCOA_PRIVATE_DATE_H_ +#define _WX_OSX_COCOA_PRIVATE_DATE_H_ + +#include "wx/datetime.h" + +namespace wxOSXImpl +{ + +// Functions to convert between NSDate and wxDateTime. + +// Returns an NSDate corresponding to the given wxDateTime which can be invalid +// (in which case nil is returned). +inline NSDate* NSDateFromWX(const wxDateTime& dt) +{ + if ( !dt.IsValid() ) + return nil; + + // Get the internal representation as a double used by NSDate. + double ticks = dt.GetValue().ToDouble(); + + // wxDateTime uses milliseconds while NSDate uses (fractional) seconds. + return [NSDate dateWithTimeIntervalSince1970:ticks/1000.]; +} + + +// Returns wxDateTime corresponding to the given NSDate (which may be nil). +inline wxDateTime NSDateToWX(const NSDate* d) +{ + if ( !d ) + return wxDefaultDateTime; + + // Reverse everything done above. + wxLongLong ll; + ll.Assign([d timeIntervalSince1970]*1000); + wxDateTime dt(ll); + return dt; +} + +} // namespace wxOSXImpl + +#endif // _WX_OSX_COCOA_PRIVATE_DATE_H_ -- 2.45.2