#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, time, platform, calendar, subprocess as sp from datetime import date # from https://github.com/bear/parsedatetime import parsedatetime as pdt def print_parsedatetime_test_conversions(natural_langage_dates_list): cal = pdt.Calendar() for date in natural_langage_dates_list: (struct_time_date, success) = cal.parse(date) if success: formal_date = time.strftime('%Y-%m-%d', struct_time_date) else: formal_date = '(conversion failed)' print '{0:>15s} -> {1:10s}'.format(date, formal_date) def print_OS_info(): if platform.system() == 'Windows': sys.exit() cmds = [ 'python --version', 'pip show parsedatetime', 'uname -a' ] if platform.system() == 'Darwin': cmds.append('sw_vers') if platform.system() == 'Linux': cmds.append('lsb_release -a') for cmd in cmds: print "'$ " + cmd + "':" p = sp.Popen(cmd, shell=True) p.communicate() print def print_todays_date(): todays_day_of_week = calendar.day_name[date.today().weekday()] print "today's date = " + todays_day_of_week + ', ' + \ time.strftime('%Y-%m-%d') + '\n' example_natural_langage_dates_list = \ [ '-1 thursday', 'last thursday', '-1 thursday', '- thursday', '-thursday', '1 thursday', '+1 thursday', 'last thursday', 'next thursday', 'monday', '-1 monday', 'last monday', '-1 monday', '-2 monday', '- monday', 'monday', '-1 sunday', '- sunday', 'sunday', 'last sat', 'tomorrow', 'yesterday', '- days', '- day', '-1d', '2d', '16month', '-16month', '6 months', '3y', '-1 days', '-3 days', ' 3 d', '-2 months', ' 2 month', '-1 years', ' 1 yrs', ' 1 yr', '-2 yr', 'thur', 'thu', 'th', 'mon', 'monday', 'next monday', 'next tues', 'last tues', '-3 tues', ] print_OS_info() print_todays_date() print_parsedatetime_test_conversions(example_natural_langage_dates_list)