Python strftime - date without leading 0?
⚡TLDR
In Python, use strftime
with %-d
for days and %-m
for months to format a date without leading zeros:
Heads up: %-
modifier might not be a Windows' best friend. Use %#d
and %#m
as pitcher and catcher.
Platform specific nuances and workarounds
In a perfect world, date formatting would be hassle-free. But we're programmers, so let's buckle up and embrace the chaos:
Directives of strftime
and platforms
Orientation within the various interpretations of strftime
directives:
- Unix/Linux/OS X: Paddle on the swift
%-d
and%-m
stream. - Windows: Although not documented formally,
%#d
and%#m
are trusty sidekicks.
More arrows in our Python quiver
The format
method
When the lion of strftime
roars too loud, let the mouse of format
sneak in:
Making use of f-strings
Our f-string buddies since Python 3.6 offer a stylish handshake for inline formatting:
Post-processing using the replace
method or regex
When direct routes are jammed, we detour:
Pearls of wisdom about compatibility
Under Python's gentle ripples, the tidal wave of strftime
relies on the wind of OS-dependent C libraries:
- GNU C Library supports
%e
for a day in the month with space-padding, which can be vacuumed away using Python'sstrip()
. - Tread careful while tiptoeing on the tightrope of compatibility. Always, I repeat, always test your date formatting across targeted platforms.
Pro tactics for date formatting
Beyond the horizon of basics
strptime
for parsing: Usedatetime.strptime('4/1', '%m/%d')
, a loyal compadre who can read our formatted dates.- Locale considerations:
%b
for abbreviated month names can save from the confusion of cross-cultural date understanding (01/02
is "January 2nd" or "February 1st"? 🤔).
Making your date formatting gold
- Direct formatting:
strftime
. Like an expressway, for quick, clean, and compact code. - Indirect formatting: String methods and regex. Like country roads, scenic but not the fastest route.
Helpful advice from experience
- Zero-Padding in ISO 8601: Retain ISO compliance even without leading zeros
date_obj.isoformat()
. - Leap year and Feb 29: Stay vigilant of these anomalies.
- Display vs. storage: Format for readability, but be sure to store in a standard format for compatibility.
Linked
Was this article helpful?