diff --git a/product/Formulator/Widget.py b/product/Formulator/Widget.py index 9dc4475a9e32d1927e3564d0d4eb98ac24cd9324..cddc9adbc71a0576470c5020af52065df0605f8a 100644 --- a/product/Formulator/Widget.py +++ b/product/Formulator/Widget.py @@ -1533,7 +1533,16 @@ class DateTimeWidget(Widget): if not value and field.get_value('default_now'): value = DateTime() text_node = Element('{%s}%s' % (TEXT_URI, local_name), nsmap=NSMAP) - attr_dict['{%s}date-value' % OFFICE_URI] = value.strftime('%Y-%m-%d %H:%M:%S') + # http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dateTime + attr_dict['{%s}date-value' % OFFICE_URI] = value.ISO8601() + # According http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Calc:_Date_%26_Time_functions + # default offset is 30/12/1899 + number_of_second_in_day = 86400 #24 * 60 * 60 + timestamp = float(value) + # XXX Works only if the timezone is the same in OpenOffice + ooo_offset_timestamp = float(DateTime(1899, 12, 30)) + days_value = (timestamp - ooo_offset_timestamp) / number_of_second_in_day + attr_dict['{%s}formula' % TEXT_URI] = 'ooow:%f' % days_value text_node.attrib.update(attr_dict) if as_string: return etree.tostring(text_node)