Package Gnumed :: Package pycommon :: Module gmDateTime |
[frames] | no frames]

# Module gmDateTime

source code

    GNUmed date/time handling.

    This modules provides access to date/time handling
    and offers an fuzzy timestamp implementation

    It utilizes

            - Python time
            - Python datetime
            - mxDateTime

    Note that if you want locale-aware formatting you need to call

            locale.setlocale(locale.LC_ALL, '')

    somewhere before importing this script.

    Note regarding UTC offsets
    --------------------------

    Looking from Greenwich:
            WEST (IOW "behind"): negative values
            EAST (IOW "ahead"):  positive values

    This is in compliance with what datetime.tzinfo.utcoffset()
    does but NOT what time.altzone/time.timezone do !

    This module also implements a class which allows the
    programmer to define the degree of fuzziness, uncertainty
    or imprecision of the timestamp contained within.

    This is useful in fields such as medicine where only partial
    timestamps may be known for certain events.

    Other useful links:

            http://joda-time.sourceforge.net/key_instant.html

Version: $Revision: 1.34 $

Author: K. Hilbert <Karsten.Hilbert@gmx.net>

License: GPL v2 or later (details at http://www.gnu.org)

Classes
| cFuzzyTimestamp A timestamp implementation with definable inaccuracy.

Functions
init() | source code
mxdt2py_dt(mxDateTime) | source code
format_dob(dob, format=`'``%x``'`, encoding=None, none_string=None) | source code
pydt_strftime(dt, format=`'``%c``'`, encoding=None, accuracy=None) | source code
pydt_now_here() Returns NOW @ HERE (IOW, in the local timezone. | source code
pydt_max_here() | source code
wx_now_here(wx=None) Returns NOW @ HERE (IOW, in the local timezone. | source code
wxDate2py_dt(wxDate=None) | source code
py_dt2wxDate(py_dt=None, wx=None) | source code
format_interval(interval=None, accuracy_wanted=None, none_string=None) | source code
format_interval_medically(interval=None) Formats an interval. | source code
calculate_apparent_age(start=None, end=None) The result of this is a tuple (years, ..., seconds) as one would 'expect' a date to look like, that is, simple differences between the fields. | source code
format_apparent_age_medically(age=None) <age> must be a tuple as created by calculate_apparent_age() | source code
str2interval(str_interval=None) | source code
str2pydt_matches(str2parse=None, patterns=None) Turn a string into candidate dates and auto-completions the user is likely to type. | source code
str2fuzzy_timestamp_matches(str2parse=None, default_time=None, patterns=None) Turn a string into candidate fuzzy timestamps and auto-completions the user is likely to type. | source code

Variables
| __doc__ = ``...``
| dst_locally_in_use = `None`
| dst_currently_in_effect = `None`
| current_local_utc_offset_in_seconds = `None`
| current_local_timezone_interval = `None`
| current_local_iso_numeric_timezone_string = `None`
| current_local_timezone_name = `None`
| py_timezone_name = `None`
| py_dst_timezone_name = `None`
| gmCurrentLocalTimezone = ``'``gmCurrentLocalTimezone not initialized``'``
| gregorian_month_length = ``{`1`:` 31`,` 2`:` 28`,` 3`:` 31`,` 4`:` 30`,` 5`:` 31`,` 6`...``
| avg_days_per_gregorian_year = `365`
| avg_days_per_gregorian_month = `30`
| avg_seconds_per_day = `86400`
| days_per_week = `7`
| __package__ = ``'``Gnumed.pycommon``'``
| acc_days = `4`
| acc_hours = `5`
| acc_minutes = `6`
| acc_months = `2`
| acc_seconds = `7`
| acc_subseconds = `8`
| acc_weeks = `3`
| acc_years = `1`

Imports: sys, pyDT, time, os, regex, locale, logging, mxDT, psycopg2, gmI18N, cLocalTimezone, cFixedOffsetTimezone

Function Details

### format_interval_medically(interval=None) | source code
Formats an interval. This isn't mathematically correct but close enough for display.

### calculate_apparent_age(start=None, end=None) | source code
The result of this is a tuple (years, ..., seconds) as one would 'expect' a date to look like, that is, simple differences between the fields. No need for 100/400 years leap days rule because 2000 WAS a leap year. This does not take into account time zones which may shift the result by one day. <start> and <end> must by python datetime instances <end> is assumed to be "now" if not given

### str2pydt_matches(str2parse=None, patterns=None) | source code
Turn a string into candidate dates and auto-completions the user is likely to type. You MUST have called locale.setlocale(locale.LC_ALL, '') somewhere in your code previously. Parameters: `patterns` (list) - list of time.strptime compatible date pattern

### str2fuzzy_timestamp_matches(str2parse=None, default_time=None, patterns=None) | source code
Turn a string into candidate fuzzy timestamps and auto-completions the user is likely to type. You MUST have called locale.setlocale(locale.LC_ALL, '') somewhere in your code previously. Parameters: `default_time` (an mx.DateTime.DateTimeDelta instance) - if you want to force the time part of the time stamp to a given value and the user doesn't type any time part this value will be used `patterns` (list) - list of [time.strptime compatible date/time pattern, accuracy]

Variables Details

  ### __doc__ Value:
      """
      GNUmed date/time handling.

      This modules provides access to date/time handling
      and offers an fuzzy timestamp implementation

      It utilizes

      ...

  ### gregorian_month_length Value:
      {1: 31,
       2: 28,
       3: 31,
       4: 30,
       5: 31,
       6: 30,
       7: 31,
       8: 31,
      ...