1 #############################################################################
2 ## Name: ext/datetime/XS/DateTime.xsp
3 ## Purpose: XS++ for Wx::DateTime
4 ## Author: Mattia Barbon
7 ## RCS-ID: $Id: DateTime.xsp 2562 2009-05-17 08:57:33Z mbarbon $
8 ## Copyright: (c) 2002, 2006, 2009 Mattia Barbon
9 ## Licence: This program is free software; you can redistribute it and/or
10 ## modify it under the same terms as Perl itself
11 #############################################################################
13 #include <wx/datetime.h>
18 #define wxDateTime__TimeZone wxDateTime::TimeZone
19 #define Month wxDateTime::Month
20 #define WeekDay wxDateTime::WeekDay
21 #define WeekFlags wxDateTime::WeekFlags
22 #define NameFlags wxDateTime::NameFlags
23 #define wxDateTime_t wxDateTime::wxDateTime_t
24 #define Monday_First wxDateTime::Monday_First
25 #define Name_Full wxDateTime::Name_Full
26 #define Name_Abbr wxDateTime::Name_Abbr
27 #define Calendar wxDateTime::Calendar
28 #define Gregorian wxDateTime::Gregorian
29 #define Inv_Year wxDateTime::Inv_Year
30 #define Inv_Month wxDateTime::Inv_Month
31 #define wxDefaultDateTimePtr (wxDateTime*)&wxDefaultDateTime
33 #if WXPERL_W_VERSION_LT( 2, 5, 4 )
34 #define wxDefaultDateTimeFormat _T("%c")
38 %typemap{Month}{simple};
39 %typemap{WeekDay}{simple};
40 %typemap{WeekFlags}{simple};
41 %typemap{wxDateTime_t}{simple};
42 %typemap{Calendar}{simple};
43 %typemap{wxDefaultDateTime}{simple};
44 %typemap{wxDefaultDateTimeFormat}{simple};
46 %typemap{const wxDateTime::TimeZone&}{parsed}{%wxDateTime::TimeZone%};
48 %name{Wx::DateTime} class wxDateTime
51 %name{newFromTimeT} wxDateTime( time_t time );
52 %name{newFromDMY} wxDateTime( wxDateTime_t day,
53 Month month = Inv_Month,
54 int year = Inv_Year, wxDateTime_t hour = 0,
55 wxDateTime_t minute = 0, wxDateTime_t second = 0,
56 wxDateTime_t millisec = 0 );
62 wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
66 %code{% wxPli_thread_sv_unregister( aTHX_ "Wx::DateTime", THIS, ST(0) );
70 #define wxPL_DATETIME_FORMAT wxT("%c")
72 wxString Format( const wxChar* format = wxPL_DATETIME_FORMAT,
73 const wxDateTime::TimeZone& tz = wxDateTime::Local );
74 wxString FormatDate();
76 int GetYear( const wxDateTime::TimeZone& tz = wxDateTime::Local );
77 Month GetMonth( const wxDateTime::TimeZone& tz = wxDateTime::Local );
78 wxDateTime_t GetDay( const wxDateTime::TimeZone& tz = wxDateTime::Local );
79 WeekDay GetWeekDay( const wxDateTime::TimeZone& tz = wxDateTime::Local );
80 wxDateTime_t GetHour( const wxDateTime::TimeZone& tz = wxDateTime::Local );
81 wxDateTime_t GetMinute( const wxDateTime::TimeZone& tz = wxDateTime::Local );
82 wxDateTime_t GetSecond( const wxDateTime::TimeZone& tz = wxDateTime::Local );
83 wxDateTime_t GetMillisecond( const wxDateTime::TimeZone& tz = wxDateTime::Local );
84 wxDateTime_t GetDayOfYear( const wxDateTime::TimeZone& tz = wxDateTime::Local );
85 wxDateTime_t GetWeekOfYear( WeekFlags flags = Monday_First, const wxDateTime::TimeZone& tz = wxDateTime::Local );
86 wxDateTime_t GetWeekOfMonth( WeekFlags flags = Monday_First, const wxDateTime::TimeZone& tz = wxDateTime::Local );
88 %name{SetTimeT} wxDateTime& Set( time_t time )
89 %code{% RETVAL = &(THIS->Set( time )); %};
90 %name{SetJDN} wxDateTime& Set( double jdn )
91 %code{% RETVAL = &(THIS->Set( jdn )); %};
92 %name{SetHMS} wxDateTime& Set( wxDateTime_t hour, wxDateTime_t minute = 0,
93 wxDateTime_t second = 0,
94 wxDateTime_t msec = 0 )
95 %code{% RETVAL = &(THIS->Set( hour, minute, second, msec )); %};
96 %name{Set} wxDateTime& Set( wxDateTime_t day,
97 Month month = Inv_Month,
99 wxDateTime_t hour, wxDateTime_t minute = 0,
100 wxDateTime_t second = 0,
101 wxDateTime_t msec = 0 )
102 %code{% RETVAL = &(THIS->Set( day, month, year,
103 hour, minute, second, msec ));
106 wxDateTime& SetYear( int year );
107 wxDateTime& SetMonth( Month month );
108 wxDateTime& SetDay( wxDateTime_t day );
109 wxDateTime& SetHour( wxDateTime_t hour );
110 wxDateTime& SetMinute( wxDateTime_t minute );
111 wxDateTime& SetSecond( wxDateTime_t second );
112 wxDateTime& SetMillisecond( wxDateTime_t millisecond );
114 wxString FormatISODate();
115 wxString FormatTime();
116 wxString FormatISOTime();
118 #if WXPERL_W_VERSION_LT( 2, 9, 0 )
119 wxString ParseFormat( wxString date,
120 wxString format = wxDefaultDateTimeFormat,
121 const wxDateTime& dateDef = wxDefaultDateTimePtr );
122 wxString ParseDate( wxString date);
123 wxString ParseDateTime( wxString date);
124 wxString ParseTime( wxString date);
125 wxString ParseRfc822Date( wxString date);
128 wxDateTime& SetToCurrent( );
129 wxDateTime& ResetTime( );
131 bool IsEqualTo( wxDateTime& dt );
132 bool IsEarlierThan( wxDateTime& dt );
133 bool IsLaterThan( wxDateTime& dt );
134 bool IsBetween( wxDateTime& dt1, wxDateTime& dt2 );
135 bool IsStrictlyBetween( wxDateTime& dt1, wxDateTime& dt2 );
136 bool IsSameDate( wxDateTime& dt );
137 bool IsSameTime( wxDateTime& dt );
139 # all Add & Subtract methods for Time and Date parts
140 %name{AddDate} wxDateTime& Add( wxDateSpan& ds );
141 %name{AddTime} wxDateTime& Add( wxTimeSpan& ds );
142 # TimeSpan and all needed functions
143 # DateSpan and all needed functions
149 wxDateTime::GetAmPmStrings()
152 THIS->GetAmPmStrings( &am, &pm );
153 SV* ams = wxPli_wxString_2_sv( aTHX_ am, sv_newmortal() ),
154 * pms = wxPli_wxString_2_sv( aTHX_ pm, sv_newmortal() );
163 RETVAL = new wxDateTime( wxDateTime::Today() );
170 RETVAL = new wxDateTime( wxDateTime::Now() );
177 RETVAL = new wxDateTime( wxDateTime::UNow() );
182 IsLeapYear( int year, Calendar cal = Gregorian)
184 RETVAL = wxDateTime::IsLeapYear( year, cal );
189 GetMonthName( Month month, NameFlags flags = Name_Full )
191 RETVAL = wxDateTime::GetMonthName( month, flags );
196 GetWeekDayName( WeekDay weekday, NameFlags flags = Name_Full )
198 RETVAL = wxDateTime::GetWeekDayName( weekday, flags );
203 GetNumberOfDaysInYear( int year = Inv_Year, Calendar cal = Gregorian )
205 RETVAL = wxDateTime::GetNumberOfDays( year, cal );
210 GetNumberOfDaysInMonth( Month month, int year = Inv_Year, Calendar cal = Gregorian )
212 RETVAL = wxDateTime::GetNumberOfDays( month, year, cal );
217 GetCentury( int year = Inv_Year )
219 RETVAL = wxDateTime::GetCentury( year );
224 GetCurrentYear( Calendar cal = Gregorian )
226 RETVAL = wxDateTime::GetCurrentYear( cal );
231 GetCurrentMonth( Calendar cal = Gregorian )
233 RETVAL = wxDateTime::GetCurrentMonth( cal );