]> git.saurik.com Git - wxWidgets.git/commitdiff
Added helpers for translating between wxDateTime and NSDate.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 20 Dec 2011 21:27:09 +0000 (21:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 20 Dec 2011 21:27:09 +0000 (21:27 +0000)
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 [new file with mode: 0644]

diff --git a/include/wx/osx/cocoa/private/date.h b/include/wx/osx/cocoa/private/date.h
new file mode 100644 (file)
index 0000000..a3776ba
--- /dev/null
@@ -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 <vadim@wxwidgets.org>
+// 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_