def _format_html_time_tag(datetime, what_to_display): now = time_utcnow() date = None if datetime.date() == now.date(): date = "Today" elif datetime.date() == (now - timedelta(days=1)).date(): date = "Yesterday" if what_to_display == "date-only": exact = babel_format_date(datetime, format="dd MMM yyyy", locale=_get_user_locale()) content = date if date else exact elif what_to_display == "date-and-time": exact = babel_format_datetime( datetime, format="dd.MM.yyyy HH:mm:ss", tzinfo=get_timezone(), locale=_get_user_locale() ) if date: content = date + ", " + \ babel_format_datetime( datetime, format="HH:mm:ss", tzinfo=get_timezone(), locale=_get_user_locale() ) else: content = exact else: raise ValueError("what_to_display argument invalid") isoformat = datetime.isoformat() return Markup('<time datetime="{isoformat}" data-toggle="tooltip" data-placement="top" title="{exact}">{content}</time>'.format( isoformat=isoformat, exact=exact, content=content ))
def format_datetime(t=None, format='%x %X', tzinfo=None, locale=None): """Format the `datetime` object `t` into an `unicode` string If `t` is None, the current time will be used. The formatting will be done using the given `format`, which consist of conventional `strftime` keys. In addition the format can be 'iso8601' to specify the international date format (compliant with RFC 3339). `tzinfo` will default to the local timezone if left to `None`. """ if locale == 'iso8601': format = _ISO8601_FORMATS['datetime'].get(format, format) return _format_datetime_without_babel(t, format, tzinfo) if babel and locale: if format == '%x': return babel_format_date(t, 'medium', locale) if format == '%X': t = to_datetime(t, tzinfo) return babel_format_time(t, 'medium', None, locale) if format in ('%x %X', None): format = 'medium' if format in _BABEL_FORMATS['datetime']: t = to_datetime(t, tzinfo) return babel_format_datetime(t, format, None, locale) format = _BABEL_FORMATS['datetime'].get(format, format) return _format_datetime_without_babel(t, format, tzinfo)
def get_time_format_jquery_ui(locale): """Get the time format for the jQuery UI timepicker addon.""" if locale == 'iso8601': return 'HH:mm:ssZ' if babel and locale: values = { 'h': 'h', 'hh': 'hh', 'H': 'H', 'HH': 'HH', 'm': 'm', 'mm': 'mm', 's': 's', 'ss': 'ss' } f = get_time_format('medium', locale=locale).format if '%(a)s' in f: t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) ampm = babel_format_datetime(t, 'a', None, locale) values['a'] = 'TT' if ampm[0].isupper() else 'tt' return f % values t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) tmpl = format_time(t, tzinfo=utc) ampm = format_time(t, '%p', tzinfo=utc) if ampm: tmpl = tmpl.replace(ampm, 'TT' if ampm[0].isupper() else 'tt', 1) return tmpl.replace('23', 'HH', 1).replace('11', 'hh', 1) \ .replace('59', 'mm', 1).replace('58', 'ss', 1)
def _format_datetime(t, format, tzinfo, locale, hint): t = to_datetime(t, tzinfo or localtz) if format == 'iso8601': return _format_datetime_iso8601(t, 'long', hint) if format in ('iso8601date', 'iso8601time'): return _format_datetime_iso8601(t, 'long', format[7:]) if locale == 'iso8601': if format is None: format = 'long' elif format in _STRFTIME_HINTS: hint = _STRFTIME_HINTS[format] format = 'long' if format in ('short', 'medium', 'long', 'full'): return _format_datetime_iso8601(t, format, hint) return _format_datetime_without_babel(t, format) if babel and locale: if format is None: format = 'medium' elif format in _STRFTIME_HINTS: hint = _STRFTIME_HINTS[format] format = 'medium' if format in ('short', 'medium', 'long', 'full'): if hint == 'datetime': return babel_format_datetime(t, format, None, locale) if hint == 'date': return babel_format_date(t, format, locale) if hint == 'time': return babel_format_time(t, format, None, locale) format = _BABEL_FORMATS[hint].get(format, format) return _format_datetime_without_babel(t, format)
def format_datetime(date_value, date_format='medium'): date = dateutil.parser.parse(date_value) if date_format == 'full': date_format = "EEEE MMMM, d, y 'at' h:mma" elif date_format == 'medium': date_format = "EE MM, dd, y h:mma" return babel_format_datetime(date, format=date_format, locale=LOCALE)
def format_datetime(dt, locale_name=None, format="medium"): """Returns a prettyfied version of a datetime. If a locale_name is provided the datetime will be localized. Without a locale the datetime will be formatted into the form YYYY-MM-DD hh:ss""" if locale_name: locale = Locale(locale_name) return babel_format_datetime(dt, locale=locale, format=format) return dt.strftime("%Y-%m-%d %H:%M")
def format_datetime(value, format='medium'): if format == 'full': format = "EEEE, d. MMMM y 'at' HH:mm" elif format == 'medium': format = "EE dd.MM.y HH:mm" elif format == 'pretty': now = datetime.now() delta = now - value return pretty.date(now - delta) return babel_format_datetime(value, format)
def local_to_utc_datetime(dt): """Converts a naive local datetime object to a naive UTC datetime object.""" from datetime import datetime import pytz from babel.dates import format_datetime as babel_format_datetime from flask.ext.babel import get_timezone as flask_babel_get_timezone local = flask_babel_get_timezone() return datetime.strptime(babel_format_datetime(local.localize(dt), 'YYYY-MM-dd HH:mm:ss', tzinfo=pytz.UTC), '%Y-%m-%d %H:%M:%S')
def format_datetime(self, datetime_obj, date_only, format, localized) -> str: if date_only: return babel_format_date(datetime_obj, format=format, locale=self.locale) else: if localized: tzinfo = get_localzone() else: tzinfo = None return babel_format_datetime(datetime_obj, format=format, tzinfo=tzinfo, locale=self.locale)
def _format_html_time_tag(datetime, what_to_display): if what_to_display == "date-only": content = babel_format_date(datetime, format="dd MMM yyyy", locale=_get_user_locale()) elif what_to_display == "date-and-time": content = babel_format_datetime(datetime, format="dd.MM.yyyy HH:mm:ss", tzinfo=get_timezone("Europe/Moscow"), locale=_get_user_locale()) else: raise ValueError("what_to_display argument invalid") isoformat = datetime.isoformat() return Markup('<time datetime="{}">{}</time>'.format(isoformat, content))
def _format_html_time_tag(datetime, what_to_display): if what_to_display == "date-only": content = babel_format_date(datetime, locale=_get_user_locale()) elif what_to_display == "date-and-time": content = babel_format_datetime(datetime, tzinfo=UTC, locale=_get_user_locale()) # While this could be done with a format string, that would # hinder internationalization and honestly why bother. content += " UTC" else: raise ValueError("what_to_display argument invalid") isoformat = datetime.isoformat() return Markup( '<time datetime="{}" data-what_to_display="{}">{}</time>'.format( isoformat, what_to_display, content))
def _format_html_time_tag(datetime, what_to_display): if what_to_display == "date-only": content = babel_format_date(datetime, locale=_get_user_locale()) elif what_to_display == "date-and-time": content = babel_format_datetime( datetime, tzinfo=UTC, locale=_get_user_locale() ) # While this could be done with a format string, that would # hinder internationalization and honestly why bother. content += " UTC" else: raise ValueError("what_to_display argument invalid") isoformat = datetime.isoformat() return Markup( '<time datetime="{}" data-what_to_display="{}">{}</time>'.format( isoformat, what_to_display, content ) )
def get_time_format_jquery_ui(locale): """Get the time format for the jQuery UI timepicker addon.""" if locale == 'iso8601': return 'HH:mm:ssz' # XXX timepicker doesn't support 'ISO_8601' if babel and locale: values = {'h': 'h', 'hh': 'hh', 'H': 'H', 'HH': 'HH', 'm': 'm', 'mm': 'mm', 's': 's', 'ss': 'ss'} f = get_time_format('medium', locale=locale).format if '%(a)s' in f: t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) ampm = babel_format_datetime(t, 'a', None, locale) values['a'] = 'TT' if ampm[0].isupper() else 'tt' return f % values t = datetime(1999, 10, 29, 23, 59, 58, tzinfo=utc) tmpl = format_time(t, tzinfo=utc) ampm = format_time(t, '%p', tzinfo=utc) if ampm: tmpl = tmpl.replace(ampm, 'TT' if ampm[0].isupper() else 'tt', 1) return tmpl.replace('23', 'HH', 1).replace('11', 'hh', 1) \ .replace('59', 'mm', 1).replace('58', 'ss', 1)
def format_datetime(dt): return babel_format_datetime(dt, format='long', locale='fr')[:-9]
def format_datetime(date_time: datetime) -> str: return babel_format_datetime(date_time, format="long", locale="fr")[:-9]
def format_datetime(value: date, format: str = "medium") -> str: return babel_format_datetime(value, format=format)
def _format_datetime(t, req): tz = getattr(req, 'tz', None) locale = getattr(req, 'locale', None) return babel_format_datetime(t, tzinfo=tz, locale=locale)