diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-08-09 10:22:11 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-08-09 10:22:11 (GMT) |
commit | d77f93ad8174dd839ced84e56ebf76a0bf87c064 (patch) | |
tree | 948f75d32db38aadb76d4fc98320216775ed1e49 /Mac | |
parent | f1148f0bb3b227baac1708221cbf818427365c09 (diff) | |
download | cpython-d77f93ad8174dd839ced84e56ebf76a0bf87c064.zip cpython-d77f93ad8174dd839ced84e56ebf76a0bf87c064.tar.gz cpython-d77f93ad8174dd839ced84e56ebf76a0bf87c064.tar.bz2 |
Obsolete now that there's a python implementation of strptime in the
standard lib.
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Contrib/strptime/strptime.py | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/Mac/Contrib/strptime/strptime.py b/Mac/Contrib/strptime/strptime.py deleted file mode 100644 index 12b79aa..0000000 --- a/Mac/Contrib/strptime/strptime.py +++ /dev/null @@ -1,250 +0,0 @@ -""" strptime version 1.3, Time-stamp: <96/09/23 21:22:24 flognat> - The reverse of strftime. - - Copyright (C) 1996 Andy Eskilsson, flognat@fukt.hk-r.se - - This is free software; unrestricted redistribution is allowed under the - terms of the GPL. For full details of the license conditions of this - software, see the GNU General Public License. - - And here comes the documentation: - - Throw a string and a format specification at strptime and if everything - is ok you will get a tuple containing 9 items that are compatible with - pythons time-module. - - interface: - strptime(inputstring, formatstring) - - Little errorchecking... so you'd better know what you are doing. - - example: - from strptime import * - mktime(strptime("26/6 1973", "%d/%m %Y")) - - And voila you have the second when the author of this function was born. - - The supported format identifiers are: - %a weekday in short text-form, e.g. Mon - %A weekday in long text-form, e.g. Monday - %b month in short text-form, e.g. Jul - %B month in long text-form e.g. July - %c the format specified by DateAndTimeRepresentation - %d the day in month in numeric form, e.g. 24 - %H hour in 24 hour form - %j julian day (day of year) - %m month in numeric format - %M minute - %S second - %T Time in '%H:%M:%S'-format - %w weekday, 0=monday - %x date in format represented by DateRepresentation - %X time in format represented by TimeRepresentation - %y year in short form - %Y year in long form - %% %-sign - - I have done some thinking here (*REALLY*) and it is possible to configure - this module so it uses other languages by adding their names to the - dictionaries first in the file, and setting the variable LANGUAGE. - - For your exercise I have inserted the swedish names ;-) - - The lfind, name, complex, numbers and parse functions are for internal - use, called by strptime. - - Uh.. oh yeah.. if you want to get in touch with me.. I am reachable - at flognat@fukt.hk-r.se, the newest version of this file can probably - be found somewhere close to http://www.fukt.hk-r.se/~flognat - - If you like it, send a postcard to Andy Eskilsson - Kämnärsv. 3b228 - S-226 46 Lund - Sweden - - Uhm be gentle with the bug-reports, its the first time for me ;-) - - """ - -import string - -LongDayNames={ 'English' : [ 'Monday', 'Tuesday', 'Wednesday', - 'Thursday', 'Friday', 'Saturday', 'Sunday'], - 'Swedish' : [ 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', - 'Fredag', 'Lördag', 'Söndag']} -ShortDayNames={ 'English' : [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], - 'Swedish' : [ 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör', 'Sön']} - -LongMonthNames={ 'English' : ['none', 'January', 'February', 'March', 'April', - 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December'], - 'Swedish' : ['none', 'Januari', 'Februari', 'Mars', 'April', - 'Maj', 'Juni', 'Juli', 'Augusti','September', - 'Oktober', 'November', 'December'] } -ShortMonthNames={ 'English' : ['none', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'Swedish' : ['none', 'Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', - 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']} -DateAndTimeRepresentation={ 'English' : '%a %b %d %H:%m:%S %Y', - 'Swedish' : '%a %d %b %Y %H:%m:%S' } - -DateRepresentation = { 'English' : '%m/%d/%y', - 'Swedish' : '%d/%m/%y'} - -TimeRepresentation = { 'English' : '%H:%M:%S', - 'Swedish' : '%H:%M:%S'} - -LANGUAGE='English' - -BadFormatter='An illegal formatter was given' - -#Check if strinf begins with substr -def lfind(str, substr): - return string.lower(str[:len(substr)])==string.lower(substr) - -#atoms consisting of other atoms -def complex(str, format, base): - code=format[:1] - if code=='c': - string=DateAndTimeRepresentation[LANGUAGE] - elif code=='T': - string='%H:%M:%S' - elif code=='x': - string=DateRepresentation[LANGUAGE] - elif code=='X': - string=TimeRepresentation[LANGUAGE] - - return parse(str, string, base) - -#string based names -def names(str, format, base): - code=format[:1] - if code=='a': - selection=ShortDayNames[LANGUAGE] - result='weekd' - elif code=='A': - selection=LongDayNames[LANGUAGE] - result='weekd' - elif code=='b': - selection=ShortMonthNames[LANGUAGE] - result='month' - elif code=='B': - selection=LongMonthNames[LANGUAGE] - result='month' - - match=None - for i in selection: - if lfind(str, i): - match=i - break - - base[result]=selection.index(match) - return len(match) - -#numeric stuff -def numeric(str, format, base): - code=format[:1] - if code=='d': result='day' - elif code=='H': result='hour' - elif code=='j': result='juliand' - elif code=='m': result='month' - elif code=='M': result='min' - elif code=='S': result='sec' - elif code=='w': result='weekd' - elif code=='y': result='shortYear' - elif code=='Y': result='year' - - i=0 - while str[i] in string.whitespace: i=i+1 - j=i - if len(format)>1: - while not str[j] in string.whitespace and str[j]!=format[1]: j=j+1 - else: - try: - while not str[j] in string.whitespace: j=j+1 - except IndexError: - pass - - # hmm could check exception here, but what could I add? - base[result]=string.atoi(str[i:j]) - - return j - -parseFuns={ 'a':names, 'A':names, 'b':names, 'B':names, 'c':complex, 'd':numeric, - 'H':numeric, 'j':numeric, 'm':numeric, 'M':numeric, 'S':numeric, - 'T':complex, 'w':numeric, 'x':complex, 'y':numeric, 'Y':numeric} - -# Well split up in atoms, reason to why this is separated from atrptime -# is to be able to reparse complex atoms -def parse(str, format, base): - atoms=string.split(format, '%') - charCounter=0 - atomCounter=0 - - # Hey I am laazy and think that the format is exactly what the string is! - charCounter=charCounter+len(atoms[atomCounter]) - atomCounter=atomCounter+1 - - while atomCounter < len(atoms) and charCounter < len(str): - atom=atoms[atomCounter] - - if atom=='': # escaped - charCounter=charCounter+1 - atomCounter=atomCounter+1 - charCounter=charCounter+len(atoms[atomCounter]) - else: - try: - parsefunction=parseFuns[atom[:1]] - except KeyError: - raise BadFormatter, atom[:1] - grabbed=apply(parsefunction, (str[charCounter:], atom, base)) - charCounter=charCounter+grabbed+len(atom)-1 - - atomCounter=atomCounter+1 - - return charCounter - -# Ok here we go, tadaaa --> STRPTIME <-- at last.. -def strptime(str, format): - """Converts str specified by format to tuple useable by the time module""" - returnTime={} - returnTime['year']=0 - returnTime['shortYear']=None - returnTime['month']=0 - returnTime['day']=0 - returnTime['hour']=0 - returnTime['min']=0 - returnTime['sec']=0 - returnTime['weekd']=0 - returnTime['juliand']=0 - returnTime['dst']=0 - - parse(str, format, returnTime) - - if returnTime['shortYear']!=None: - returnTime['year']=returnTime['shortYear']+1900 - - return (returnTime['year'], returnTime['month'], returnTime['day'], - returnTime['hour'], returnTime['min'], returnTime['sec'], - returnTime['weekd'], returnTime['juliand'], returnTime['dst']) - -# just for my convenience -def strpdebug(): - import pdb - pdb.run('strptime("% Tue 3 Feb", "%% %a %d %b")') - -def test(): - from time import * - a=asctime(localtime(time())) - print a - b=strptime(a, '%a %b %d %H:%M:%S %Y') - print asctime(b) - print strptime("%% % Tue 3 Feb", "%%%% %% %a %d %b") - print strptime('Thu, 12 Sep 1996 19:42:06 GMT', '%a, %d %b %Y %T GMT') - print strptime('Thu, 12 Sep 1996 19:42:06 GMT', '%a, %d %b %Y %T') - print strptime('Thu, 12 Sep 1996 19:42:06', '%a, %d %b %Y %T') - -if __name__ == '__main__': - test() - - |