Skip to main content

A small catch in Python documentation (strftime).

Every developer knows datetime.strftime() method, but some don't know that its argument's format is not documented in full in the official documentation.

For example, you won't find any mention of %s directive there which means UNIX epoch time, timestamp. It works (at least with every major version of Python on Linux, FreeBSD, and MacOS), I've tested it a few times myself, it's just not documented.

I recently saw a piece of code where developers, being unaware of such a directive, used custom format string with both datetime.now() and time.time(), a function generator, and on top of it messed with model migrations (it all was about FileField.upload_to if you know what I'm talking about) when they could just use %s.

From other undocumented features you might be interested in these:

%C is a century (%Y//100), could be helpful for complimenting %y or something, I guess.

%u is a weekday number with Monday as 1 and Sunday as 7 (as opposed to %w representing Sunday as 0).

And padding/case modifiers (specifications are for reference only):

%_d (pad with blank),
%-H (no padding),
%0e (pad with zeros),
%^A (uppercase),
%#Z (effectively lowercase for %Z, not useful with anything else).

(Note: They were introduced by GNU extension but work on BSD/MacOS and other modern systems.)

I'm not writing documentation here, but for the sake of completeness, here is the list of all specifications supported by python library on major platforms but not mentioned in Python docs:

%C %D %e %F %G %g %h %k %l %n %R %r %s %T %t %u %V (and modifiers %_* %-* %0* %^* %#* %E* %O*)

Most of them are just shortcuts (like %F, %T, or %D) or simply useless (like %V, %G, %g stuff) but please refer to strftime(3) or standards for explanations.

Popular posts from this blog

「この番組は、ご覧のスポンサーの提供でお送りします」Inference Labs

It's official, I have corporate sponsors now (which will hopefully be closer to strategic partnership soon, at least I'd like that). Thanks for the steaks and wine and equipment and all other resources for my distributed hacker team (I'm hoping for a cool demo for ETHOnline hackathon), and local Web3 meatup group I facilitate in Tbilisi (steaks and gas money for everyone participating in the ecosystem), and my Web3 community support army in training. A large bag of kudos for our general sponsor: Inference Labs! If anybody needs help onboarding into the decentralised world, reach me privately and we'll help you navigating the options, we have the expenses covered and good people for this (better points of contact are being established, things are being worked on, stay tuned). I should probably tell a few words about what we actually do at Inference Labs but things change so often I hope we're still bringing decentralized AI to the Web3 world when you read this (maybe...

Russia becomes an internet outcast for some reason

It's starting to happen more and more often to me. I'm trying to use some service and all of a sudden I see an error page, sometimes a custom one but more often generated by cloudflare or a similar service, with error message effectively saying that IP addresses from Russia are banned on the service. And what is even more interesting, most of this services don't have any particular policy reasons not to allow Russian users, it's not not like they are publishing prescribed materials or doing anything interesting whatsoever. A payment processor, a popular online course provider, some random forums and information sites, one site with educational videos that I like (that one is especially funny because I'm banned from the subscription page and so can't pay them but their cdn does't care and I can actually download any video I want). But why does it happen? Is there some recommendation in some popular security guideline "block Russia, Cambodia, and Afghan...

PyGTK and desktop stuff

A few lives ago I started my professional career by trying to sell custom office software. Having opinions about that kind of stuff I've chosen Python and PyGTK and some NoSQL database library and it's been quite a struggle. In this present moment I live as a digital nomad traveling neutral zones around World War Z and I use many different online services in my professional life and all desktop clients for them are super shitty, starting with google-built web browsers. And whenever I consider building a kind of desktop utility those programs are there's a lot of resistance and comparative lack of tools (in comparison with what web backend context provides). And a lot of primary consumers for some of those services (think collaboration services) are educated, experienced, and opinionated folks like myself. Perhaps there's profit in coding desktop linux software again? And combined with my backend proficiency I could be weird full stack dev services developer... I should ...