Practical Date Techniques
Date Arithmetic and Calculations
Python provides powerful methods for performing date-based calculations and manipulations.
Date Differences and Timedeltas
from datetime import datetime, timedelta
## Calculate date difference
start_date = datetime(2023, 1, 1)
end_date = datetime(2023, 12, 31)
date_difference = end_date - start_date
print(f"Days between dates: {date_difference.days}")
## Adding/Subtracting Days
current_date = datetime.now()
future_date = current_date + timedelta(days=30)
past_date = current_date - timedelta(weeks=2)
Date Comparison Techniques
graph TD
A[Date Comparison] --> B[Equality Check]
A --> C[Greater/Less Than]
A --> D[Range Validation]
Comparing and Sorting Dates
dates = [
datetime(2023, 1, 15),
datetime(2022, 12, 1),
datetime(2023, 6, 30)
]
## Sorting dates
sorted_dates = sorted(dates)
print(sorted_dates)
## Checking date ranges
def is_date_in_range(check_date, start_date, end_date):
return start_date <= check_date <= end_date
Working with Time Zones
Technique |
Description |
Example |
Local Time |
System default time |
datetime.now() |
UTC Time |
Universal Coordinated Time |
datetime.utcnow() |
Specific Timezone |
Custom timezone handling |
datetime.now(ZoneInfo('US/Pacific')) |
Timezone Conversion
from datetime import datetime
from zoneinfo import ZoneInfo
## Convert between timezones
local_time = datetime.now(ZoneInfo('America/New_York'))
tokyo_time = local_time.astimezone(ZoneInfo('Asia/Tokyo'))
Advanced Date Parsing
from dateutil.parser import parse
## Flexible date string parsing
flexible_dates = [
"2023-08-15",
"15/08/2023",
"August 15, 2023"
]
parsed_dates = [parse(date_str) for date_str in flexible_dates]
import time
from datetime import datetime
## Efficient date generation
start = time.time()
dates = [datetime(2023, 1, 1) + timedelta(days=x) for x in range(10000)]
end = time.time()
print(f"Generation time: {end - start} seconds")
LabEx Pro Tip
When working with complex date operations in LabEx projects, leverage built-in datetime methods and consider performance implications for large-scale date manipulations.
Error Handling Strategies
def safe_date_parse(date_string):
try:
return datetime.strptime(date_string, "%Y-%m-%d")
except ValueError:
print(f"Invalid date format: {date_string}")
return None
Common Date Manipulation Patterns
Pattern |
Use Case |
Method |
Date Range |
Check inclusion |
start_date <= date <= end_date |
Future/Past Dates |
Projection |
datetime.now() + timedelta() |
Date Formatting |
Standardization |
.strftime() |