skip@calendar.com wrote:
Michael> How does one convert a database date value to a Zope date Michael> value. I'm trying to use a date value retrieved from a query of Michael> a MySQL database in the var command with the date formatting Michael> options. If I just use the raw value from the query, I get an Michael> error. Is there a way to convert this to a Zope date data type?
I don't know sure what sort of value MySQL returns,
I was wondering that myself. Does MySQL have any sort of Date type?
but in my application I store timestamps as floating point values (such as returned by time.time()). I was able to access them from DTML by converting them to DateTime objects, e.g.:
e.start = DateTime.DateTime(e.start)
There really should be access to the DateTime constructor from DTML. I'll add it to '_', so in the next release you'll be able to: <!--#var "_.DateTime(v)"--> Note that the DateTime class is documented in appendix A of the DTML manual.
then access it as appropriate from DTML:
<!--#var start fmt=aDay--> ...
I was a bit disappointed to discover there is no exposure of strftime functionality through DateTime objects. The static date formats provided don't meet my needs. To generate a date in the format I want I wind up making at least four #var references per date. If there's no strong objection, I will add an ftime (or strftime) method to DateTime objects that can at least be called through a var tag with an expr attribute.
This is a good idea. I was thinking about this a long time ago and thought I'd try to wire something like this into getattr so that it would work with the fmt machinery. Something like: class DateTime: ... def strftime(self, format): ... def __getattr__(self, name): if '%' in name: return strftimeFormatter(self, name) raise AttributeError, name class strftimeFormatter: def __init__(self, dt, format): self._dt=dt self._f=format def __call__(self): return self._dt.strftime(self._f) This should let you: <!--#var someDateTime fmt="%Y/%m/%d"--> I'd be happy to get a patch along these lines. :) Jim -- Jim Fulton mailto:jim@digicool.com Technical Director (888) 344-4332 Python Powered! Digital Creations http://www.digicool.com http://www.python.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.