mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add internal date formatter
This commit is contained in:
parent
e7c666d60f
commit
210d81c626
@ -17,7 +17,7 @@ from PyQt4.Qt import QColor, Qt, QModelIndex, QSize, \
|
||||
|
||||
from calibre.gui2 import UNDEFINED_QDATE
|
||||
from calibre.gui2.widgets import EnLineEdit, TagsLineEdit
|
||||
from calibre.utils.date import now
|
||||
from calibre.utils.date import now, format_date
|
||||
from calibre.utils.config import tweaks
|
||||
from calibre.gui2.dialogs.comments_dialog import CommentsDialog
|
||||
|
||||
@ -98,7 +98,7 @@ class DateDelegate(QStyledItemDelegate): # {{{
|
||||
d = val.toDate()
|
||||
if d == UNDEFINED_QDATE:
|
||||
return ''
|
||||
return d.toString('dd MMM yyyy')
|
||||
return format_date(d.toPyDate(), 'dd MMM yyyy')
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
qde = QStyledItemDelegate.createEditor(self, parent, option, index)
|
||||
@ -121,7 +121,7 @@ class PubDateDelegate(QStyledItemDelegate): # {{{
|
||||
format = tweaks['gui_pubdate_display_format']
|
||||
if format is None:
|
||||
format = 'MMM yyyy'
|
||||
return d.toString(format)
|
||||
return format_date(d.toPyDate(), format)
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
qde = QStyledItemDelegate.createEditor(self, parent, option, index)
|
||||
@ -195,7 +195,7 @@ class CcDateDelegate(QStyledItemDelegate): # {{{
|
||||
d = val.toDate()
|
||||
if d == UNDEFINED_QDATE:
|
||||
return ''
|
||||
return d.toString(self.format)
|
||||
return format_date(d.toPyDate(), self.format)
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
qde = QStyledItemDelegate.createEditor(self, parent, option, index)
|
||||
|
@ -6,6 +6,7 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
from dateutil.parser import parse
|
||||
@ -113,3 +114,27 @@ def utcnow():
|
||||
|
||||
def utcfromtimestamp(stamp):
|
||||
return datetime.utcfromtimestamp(stamp).replace(tzinfo=_utc_tz)
|
||||
|
||||
def format_date(dt, format):
|
||||
''' Return a date formatted as a string using a subset of Qt's formatting codes '''
|
||||
def format_day(mo):
|
||||
l = len(mo.group(0))
|
||||
if l == 1: return '%d'%dt.day
|
||||
if l == 2: return '%02d'%dt.day
|
||||
if l == 3: return dt.strftime('%a')
|
||||
return dt.strftime('%A')
|
||||
|
||||
def format_month(mo):
|
||||
l = len(mo.group(0))
|
||||
if l == 1: return '%d'%dt.month
|
||||
if l == 2: return '%02d'%dt.month
|
||||
if l == 3: return dt.strftime('%b')
|
||||
return dt.strftime('%B')
|
||||
|
||||
def format_year(mo):
|
||||
if len(mo.group(0)) == 2: return '%02d'%(dt.year % 100)
|
||||
return '%04d'%dt.year
|
||||
|
||||
format = re.sub('d{1,4}', format_day, format)
|
||||
format = re.sub('M{1,4}', format_month, format)
|
||||
return re.sub('yyyy|yy', format_year, format)
|
||||
|
Loading…
x
Reference in New Issue
Block a user