Extract date part from value returned by GetDate() of wx.calendarctrl

Hello,

I want to extract the date part from the value returned by wx.calendarCtlr.GetDate().

How do i do that ?

I’m trying to insert date value into database but it doesn’t allow me to insert because of the current format

============ DB Table ===============

DROP TABLE IF EXISTS smscentral.scheduledsms;

CREATE TABLE smscentral.scheduledsms (

ID int(10) unsigned NOT NULL AUTO_INCREMENT,

Date date NOT NULL,

Time time NOT NULL,

Number varchar(20) NOT NULL,

Text varchar(160) NOT NULL,

PRIMARY KEY (ID)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

···

===================================

============ CODE ===============

#Boa:Dialog:Dialog2

import wx

import wx.lib.masked.timectrl

import wx.lib.masked.textctrl

import wx.calendar

import DB

def create(parent):

return Dialog2(parent)

[wxID_DIALOG2, wxID_DIALOG2BTCLOSE, wxID_DIALOG2BTSCH,

wxID_DIALOG2CALENDARCTRL2, wxID_DIALOG2NUMBER, wxID_DIALOG2SPINBUTTON1,

wxID_DIALOG2STNUMBER, wxID_DIALOG2STSETDATE, wxID_DIALOG2STSETTIME,

wxID_DIALOG2STTEXT, wxID_DIALOG2TEXT, wxID_DIALOG2TIMECTRL1,

] = [wx.NewId() for _init_ctrls in range(12)]

class Dialog2(wx.Dialog):

def _init_coll_fgsTimer_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.timeCtrl1, 0, border=0, flag=0)

parent.AddWindow(self.spinButton1, 0, border=0, flag=0)

def _init_coll_fgsButtons_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.btSch, 0, border=10, flag=wx.TOP | wx.LEFT)

parent.AddWindow(self.btClose, 0, border=10, flag=wx.TOP | wx.LEFT)

def _init_coll_bsDateTime_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.stSetDate, 0, border=5, flag=wx.TOP)

parent.AddWindow(self.calendarCtrl2, 0, border=10, flag=wx.TOP)

parent.AddWindow(self.stSetTime, 0, border=10, flag=wx.TOP)

parent.AddSizer(self.fgsTimer, 0, border=10, flag=wx.TOP)

parent.AddSizer(self.fgsButtons, 0, border=10, flag=wx.LEFT | wx.TOP)

def _init_coll_bsList_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.stNumber, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.Number, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.stText, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.Text, 0, border=5, flag=wx.EXPAND | wx.ALL)

def _init_coll_fgsMain_Items(self, parent):

generated method, don’t edit

parent.AddSizer(self.bsList, 0, border=0, flag=0)

parent.AddSizer(self.bsDateTime, 0, border=15, flag=wx.LEFT)

def _init_sizers(self):

generated method, don’t edit

self.fgsMain = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self.bsList = wx.BoxSizer(orient=wx.VERTICAL)

self.bsDateTime = wx.BoxSizer(orient=wx.VERTICAL)

self.fgsButtons = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self.fgsTimer = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self._init_coll_fgsMain_Items(self.fgsMain)

self._init_coll_bsList_Items(self.bsList)

self._init_coll_bsDateTime_Items(self.bsDateTime)

self._init_coll_fgsButtons_Items(self.fgsButtons)

self._init_coll_fgsTimer_Items(self.fgsTimer)

self.SetSizer(self.fgsMain)

def _init_ctrls(self, prnt):

generated method, don’t edit

wx.Dialog.init(self, id=wxID_DIALOG2, name=’’, parent=prnt,

pos=wx.Point(397, 445), size=wx.Size(407, 305),

style=wx.STATIC_BORDER | wx.DEFAULT_DIALOG_STYLE,

title=u’SMS Scheduler’)

self.SetClientSize(wx.Size(399, 271))

self.stNumber = wx.StaticText(id=wxID_DIALOG2STNUMBER, label=u’Number’,

name=u’stNumber’, parent=self, pos=wx.Point(5, 5),

size=wx.Size(37, 16), style=0)

self.Number = wx.TextCtrl(id=wxID_DIALOG2NUMBER, name=u’Number’,

parent=self, pos=wx.Point(5, 31), size=wx.Size(163, 21), style=0,

value=u’’)

self.stText = wx.StaticText(id=wxID_DIALOG2STTEXT, label=u’SMS Text’,

name=u’stText’, parent=self, pos=wx.Point(5, 62), size=wx.Size(45,

13), style=0)

self.Text = wx.TextCtrl(id=wxID_DIALOG2TEXT, name=u’Text’, parent=self,

pos=wx.Point(5, 85), size=wx.Size(188, 171),

style=wx.TE_LINEWRAP | wx.TE_MULTILINE, value=u’’)

self.stSetDate = wx.StaticText(id=wxID_DIALOG2STSETDATE,

label=u’Select Date’, name=u’stSetDate’, parent=self,

pos=wx.Point(213, 5), size=wx.Size(75, 13), style=0)

self.stSetTime = wx.StaticText(id=wxID_DIALOG2STSETTIME,

label=u’Select Time’, name=u’stSetTime’, parent=self,

pos=wx.Point(213, 175), size=wx.Size(54, 13), style=0)

self.calendarCtrl2 = wx.calendar.CalendarCtrl(date=wx.DateTime.Now(),

id=wxID_DIALOG2CALENDARCTRL2, name=‘calendarCtrl2’, parent=self,

pos=wx.Point(213, 28), size=wx.Size(166, 137),

style=wx.calendar.CAL_SHOW_HOLIDAYS)

self.calendarCtrl2.Bind(wx.calendar.EVT_CALENDAR_SEL_CHANGED,

self.OnCalendarCtrl2CalendarSelChanged,

id=wxID_DIALOG2CALENDARCTRL2)

self.timeCtrl1 = wx.lib.masked.timectrl.TimeCtrl(display_seconds=True,

fmt24hr=False, id=wxID_DIALOG2TIMECTRL1, name=‘timeCtrl1’,

oob_color=wx.NamedColour(‘Yellow’), parent=self, pos=wx.Point(213,

198), size=wx.Size(64, 22), style=0, useFixedWidthFont=True,

value=‘12:00:00 AM’)

self.timeCtrl1.SetInsertionPoint(0)

self.timeCtrl1.SetFormat(‘HHMM’)

self.timeCtrl1.Bind(wx.EVT_TEXT_ENTER, self.OnTimeCtrl1TextEnter,

id=wxID_DIALOG2TIMECTRL1)

self.btSch = wx.Button(id=wxID_DIALOG2BTSCH, label=u’Schedule’,

name=u’btSch’, parent=self, pos=wx.Point(233, 240),

size=wx.Size(75, 23), style=0)

self.btSch.Bind(wx.EVT_BUTTON, self.OnBtSchButton, id=wxID_DIALOG2BTSCH)

self.btClose = wx.Button(id=wxID_DIALOG2BTCLOSE, label=u’Close’,

name=u’btClose’, parent=self, pos=wx.Point(318, 240),

size=wx.Size(75, 23), style=0)

self.btClose.Bind(wx.EVT_BUTTON, self.OnBtCloseButton,

id=wxID_DIALOG2BTCLOSE)

self.spinButton1 = wx.SpinButton(id=wxID_DIALOG2SPINBUTTON1,

name=‘spinButton1’, parent=self, pos=wx.Point(277, 198),

size=wx.Size(20, 20), style=wx.SP_VERTICAL)

self.timeCtrl1.BindSpinButton(self.spinButton1)

self._init_sizers()

def init(self, parent):

self._init_ctrls(parent)

self.Dt = self.calendarCtrl2.GetDate()

self.T = self.timeCtrl1.GetValue()

def OnBtSchButton(self, event):

Num = self.Number.GetValue()

Txt = self.Text.GetValue()

DBCon = DB.Con()

strSch = “INSERT INTO scheduledsms(Date,Time,Number,Text) VALUES( str_to_date(’”+str(self.Dt)+"’,’%m%d%Y’),’"+str(self.T)+"’,’"+str(Num)+"’,’"+str(Txt)+"’)";

DBCon.RunQuery(strSch)

self.Destroy()

def OnBtCloseButton(self, event):

self.Destroy()

def OnCalendarCtrl2CalendarSelChanged(self, event):

self.Dt = self.calendarCtrl2.GetDate()

def OnTimeCtrl1TextEnter(self, event):

self.T = self.timeCtrl1.GetValue()

if name == ‘main’:

app = wx.PySimpleApp()

dlg = create(None)

try:

dlg.ShowModal()

finally:

dlg.Destroy()

app.MainLoop()

================================

Regards,
Tanay Shah

def wx2date(wxdate):

year = wxdate.GetYear()

month = wxdate.GetMonth()+1

day = wxdate.GetDay()

return datetime.date(year,month,day)

Try this function to convert. It should work, but I have not got it tested.

2009-04-03

···

artman328


发件人: Tanay Shah

发送时间: 2009-04-03 20:46:15

收件人: wxpython-users

抄送:

主题: [wxpython-users] Extract date part from value returned by GetDate()of wx.calendarctrl

I want to extract the date part from the value returned by wx.calendarCtlr.GetDate().

How do i do that ?

I’m trying to insert date value into database but it doesn’t allow me to insert because of the current format

============ DB Table ===============

DROP TABLE IF EXISTS smscentral.scheduledsms;

CREATE TABLE smscentral.scheduledsms (

ID int(10) unsigned NOT NULL AUTO_INCREMENT,

Date date NOT NULL,

Time time NOT NULL,

Number varchar(20) NOT NULL,

Text varchar(160) NOT NULL,

PRIMARY KEY (ID)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

===================================

============ CODE ===============

#Boa:Dialog:Dialog2

import wx

import wx.lib.masked.timectrl

import wx.lib.masked.textctrl

import wx.calendar

import DB

def create(parent):

return Dialog2(parent)

[wxID_DIALOG2, wxID_DIALOG2BTCLOSE, wxID_DIALOG2BTSCH,

wxID_DIALOG2CALENDARCTRL2, wxID_DIALOG2NUMBER, wxID_DIALOG2SPINBUTTON1,

wxID_DIALOG2STNUMBER, wxID_DIALOG2STSETDATE, wxID_DIALOG2STSETTIME,

wxID_DIALOG2STTEXT, wxID_DIALOG2TEXT, wxID_DIALOG2TIMECTRL1,

] = [wx.NewId() for _init_ctrls in range(12)]

class Dialog2(wx.Dialog):

def _init_coll_fgsTimer_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.timeCtrl1, 0, border=0, flag=0)

parent.AddWindow(self.spinButton1, 0, border=0, flag=0)

def _init_coll_fgsButtons_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.btSch, 0, border=10, flag=wx.TOP | wx.LEFT)

parent.AddWindow(self.btClose, 0, border=10, flag=wx.TOP | wx.LEFT)

def _init_coll_bsDateTime_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.stSetDate, 0, border=5, flag=wx.TOP)

parent.AddWindow(self.calendarCtrl2, 0, border=10, flag=wx.TOP)

parent.AddWindow(self.stSetTime, 0, border=10, flag=wx.TOP)

parent.AddSizer(self.fgsTimer, 0, border=10, flag=wx.TOP)

parent.AddSizer(self.fgsButtons, 0, border=10, flag=wx.LEFT | wx.TOP)

def _init_coll_bsList_Items(self, parent):

generated method, don’t edit

parent.AddWindow(self.stNumber, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.Number, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.stText, 0, border=5, flag=wx.ALL)

parent.AddWindow(self.Text, 0, border=5, flag=wx.EXPAND | wx.ALL)

def _init_coll_fgsMain_Items(self, parent):

generated method, don’t edit

parent.AddSizer(self.bsList, 0, border=0, flag=0)

parent.AddSizer(self.bsDateTime, 0, border=15, flag=wx.LEFT)

def _init_sizers(self):

generated method, don’t edit

self.fgsMain = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self.bsList = wx.BoxSizer(orient=wx.VERTICAL)

self.bsDateTime = wx.BoxSizer(orient=wx.VERTICAL)

self.fgsButtons = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self.fgsTimer = wx.FlexGridSizer(cols=0, hgap=0, rows=1, vgap=0)

self._init_coll_fgsMain_Items(self.fgsMain)

self._init_coll_bsList_Items(self.bsList)

self._init_coll_bsDateTime_Items(self.bsDateTime)

self._init_coll_fgsButtons_Items(self.fgsButtons)

self._init_coll_fgsTimer_Items(self.fgsTimer)

self.SetSizer(self.fgsMain)

def _init_ctrls(self, prnt):

generated method, don’t edit

wx.Dialog.init(self, id=wxID_DIALOG2, name=’’, parent=prnt,

pos=wx.Point(397, 445), size=wx.Size(407, 305),

style=wx.STATIC_BORDER | wx.DEFAULT_DIALOG_STYLE,

title=u’SMS Scheduler’)

self.SetClientSize(wx.Size(399, 271))

self.stNumber = wx.StaticText(id=wxID_DIALOG2STNUMBER, label=u’Number’,

name=u’stNumber’, parent=self, pos=wx.Point(5, 5),

size=wx.Size(37, 16), style=0)

self.Number = wx.TextCtrl(id=wxID_DIALOG2NUMBER, name=u’Number’,

parent=self, pos=wx.Point(5, 31), size=wx.Size(163, 21), style=0,

value=u’’)

self.stText = wx.StaticText(id=wxID_DIALOG2STTEXT, label=u’SMS Text’,

name=u’stText’, parent=self, pos=wx.Point(5, 62), size=wx.Size(45,

13), style=0)

self.Text = wx.TextCtrl(id=wxID_DIALOG2TEXT, name=u’Text’, parent=self,

pos=wx.Point(5, 85), size=wx.Size(188, 171),

style=wx.TE_LINEWRAP | wx.TE_MULTILINE, value=u’’)

self.stSetDate = wx.StaticText(id=wxID_DIALOG2STSETDATE,

label=u’Select Date’, name=u’stSetDate’, parent=self,

pos=wx.Point(213, 5), size=wx.Size(75, 13), style=0)

self.stSetTime = wx.StaticText(id=wxID_DIALOG2STSETTIME,

label=u’Select Time’, name=u’stSetTime’, parent=self,

pos=wx.Point(213, 175), size=wx.Size(54, 13), style=0)

self.calendarCtrl2 = wx.calendar.CalendarCtrl(date=wx.DateTime.Now(),

id=wxID_DIALOG2CALENDARCTRL2, name=‘calendarCtrl2’, parent=self,

pos=wx.Point(213, 28), size=wx.Size(166, 137),

style=wx.calendar.CAL_SHOW_HOLIDAYS)

self.calendarCtrl2.Bind(wx.calendar.EVT_CALENDAR_SEL_CHANGED,

self.OnCalendarCtrl2CalendarSelChanged,

id=wxID_DIALOG2CALENDARCTRL2)

self.timeCtrl1 = wx.lib.masked.timectrl.TimeCtrl(display_seconds=True,

fmt24hr=False, id=wxID_DIALOG2TIMECTRL1, name=‘timeCtrl1’,

oob_color=wx.NamedColour(‘Yellow’), parent=self, pos=wx.Point(213,

198), size=wx.Size(64, 22), style=0, useFixedWidthFont=True,

value=‘12:00:00 AM’)

self.timeCtrl1.SetInsertionPoint(0)

self.timeCtrl1.SetFormat(‘HHMM’)

self.timeCtrl1.Bind(wx.EVT_TEXT_ENTER, self.OnTimeCtrl1TextEnter,

id=wxID_DIALOG2TIMECTRL1)

self.btSch = wx.Button(id=wxID_DIALOG2BTSCH, label=u’Schedule’,

name=u’btSch’, parent=self, pos=wx.Point(233, 240),

size=wx.Size(75, 23), style=0)

self.btSch.Bind(wx.EVT_BUTTON, self.OnBtSchButton, id=wxID_DIALOG2BTSCH)

self.btClose = wx.Button(id=wxID_DIALOG2BTCLOSE, label=u’Close’,

name=u’btClose’, parent=self, pos=wx.Point(318, 240),

size=wx.Size(75, 23), style=0)

self.btClose.Bind(wx.EVT_BUTTON, self.OnBtCloseButton,

id=wxID_DIALOG2BTCLOSE)

self.spinButton1 = wx.SpinButton(id=wxID_DIALOG2SPINBUTTON1,

name=‘spinButton1’, parent=self, pos=wx.Point(277, 198),

size=wx.Size(20, 20), style=wx.SP_VERTICAL)

self.timeCtrl1.BindSpinButton(self.spinButton1)

self._init_sizers()

def init(self, parent):

self._init_ctrls(parent)

self.Dt = self.calendarCtrl2.GetDate()

self.T = self.timeCtrl1.GetValue()

def OnBtSchButton(self, event):

Num = self.Number.GetValue()

Txt = self.Text.GetValue()

DBCon = DB.Con()

strSch = “INSERT INTO scheduledsms(Date,Time,Number,Text) VALUES( str_to_date(’”+str(self.Dt)+"’,’%m%d%Y’),’"+str(self.T)+"’,’"+str(Num)+"’,’"+str(Txt)+"’)";

DBCon.RunQuery(strSch)

self.Destroy()

def OnBtCloseButton(self, event):

self.Destroy()

def OnCalendarCtrl2CalendarSelChanged(self, event):

self.Dt = self.calendarCtrl2.GetDate()

def OnTimeCtrl1TextEnter(self, event):

self.T = self.timeCtrl1.GetValue()

if name == ‘main’:

app = wx.PySimpleApp()

dlg = create(None)

try:

dlg.ShowModal()

finally:

dlg.Destroy()

app.MainLoop()

================================

Regards,
Tanay Shah

Hello,

Hi,

Tanay Shah wrote:

Hello,

I want to extract the date part from the value returned by wx.calendarCtlr.GetDate().
How do i do that ?

I'm trying to insert date value into database but it doesn't allow me to insert because of the current format

I do not use the calendarCtrl but the wx.DatePickerCtrl and use something like this to update my database.

                if datePicker.GetValue().IsValid():
                    setattr(newAttr, comp,
                            datetime.datetime(datePicker.GetValue().GetYear(),
                            datePicker.GetValue().GetMonth()+1,
                            datePicker.GetValue().GetDay()))
                else:
                    setattr(newAttr, comp, None)

- newAttr is a SA instance of some table/row and comp is my dbColumn

calCtrl.GetDate() returns a wxDateTime which is the same as datePicker.GetValue() returns, so if you change the above accordingly it should work assuming that your database also wants year/month/day in a date column.

Note the plus 1 for the month, this is due to the fact that month in wxDateTime is zero based.

Werner