Która jest godzina?

18

Szczerze mówiąc, nie mogę uwierzyć, że nie jest to jeszcze pytanie w Code Golf, ale ...

Wydrukuj czas lokalny (z am lub pm) jako ciąg znaków na konsoli, poprzedzony „It's”.

Przykład:

Run code....

Wynik:

It's 12:32p.m.

Najkrótszy kod wygrywa.

Kod precz!

Tabela liderów

Daniel
źródło
1
Jaki jest format wyjściowy? Czy to ma znaczenie?
mbomb007,
1
Nie, to znaczy, czy powinien być, yyyy-MM-dd hh:mm:ss UTCczy ten format daty nie ma znaczenia?
mbomb007,
8
Naprawdę chciałem znaleźć odpowiedź, która jest drukowana It's beer o'clock, ale się opierałem.
MickyT,
4
Czy możemy użyć 12:32 PMlub 12:32PM? Zamiast 12:32p.m.?
Stewie Griffin,
3
Czy to 02:32 czy 2:32, jeśli jest mniej niż 10:00?
Stewie Griffin,

Odpowiedzi:

18

Bash, 39 33 bajtów

date "+It's %I:%M%P."|sed s/m/.m/

Zmarnowałem kilka znaków, ponieważ specyfikacja wymaga a.m.lub p.m.podczas datewyjścia amlub pm. Dzięki @DigitalTrauma za oszczędność 6 bajtów!

To może nie być bardzo przenośne. Działa na Ubuntu 15.04.

Rozwiązanie, które używa zasadniczo tej samej metody w Ruby , która jest zaskakująco dokładnie tej samej długości :

Rubin, 39 bajtów

$><<`date "+It's %I:%M%P"`[0..-3]+'.m.'
Klamka
źródło
%Pdaje mi wielkie litery AM lub PM. Jestem na komputerze Mac, jeśli to robi różnicę.
flodel
@flodel działa na mojej maszynie ™. Na Ubuntu 15.04 %Pdaje małe litery i %pdaje wielkie litery (co jest trochę ... nieintuicyjne).
Klamka
GNU date(w Linuksie i in.) I * BSD date(gdzie OSX jest jednym z wariantów BSD) mają bardzo różne opcje i zachowania, gdy zapuszczasz się poza zestaw funkcji określony przez POSIX. Być może więc ta odpowiedź powinna konkretnie wspomnieć o Bash na Linuksie. (To sedsamo dotyczy; ale ta konkretna inwokacja należy do bezpiecznego i przenośnego zestawu funkcji).
tripleee
Na mojej maszynie (zsh lub bash w systemie Linux) wyświetla „To 04:17”. kiedy jest godzina 16:17. Bez „am” lub „pm”
aditsu
echo -e "It's $(date +%I:%M%P)\b.m."- zamiast sedużywa backspace. Nie wygląda mi to na osobną odpowiedź. Również nie mam żadnych am / pm, ale myślę, że to z powodu lokalizacji.
aragaer
13

AppleScript, 198

Ponieważ AppleScript. Bo czemu nie:

set AppleScript's text item delimiters to {":"," "}
set d to (current date)'s time string's every text item
"It's "&d's item 1&":"&d's item 2&string id ((d's item 4's first character's id)+32)&".m."

To było bolesne.

Cyfrowa trauma
źródło
18
AppleScript to nowa Java.
Klamka
8

PHP, 35 33 bajtów

Używanie niewłaściwego narzędzia do pracy!

It's <?=trim(date('h:ia'),m)?>.m.

Po prostu usuwa mkońcówkę amlub pm, aby umożliwić dodawanie kropek. Data przychodzi jako 00:00ami wraz z trimnią staje się 00:00a.


Stara odpowiedź (tylko PHP 5.4+):

It's <?=date('h:i'),date(a)[0]?>.m.

Działa to, ponieważ można odwoływać się do wartości zwracanej z funkcji. Nie jest to możliwe w PHP 5.3 lub starszym.

Ismael Miguel
źródło
Ach, sprytnie! Pokonałeś moją odpowiedź php
DankMemes,
@DankMemes Zajęło mi to sporo czasu. I dużo eksperymentów.
Ismael Miguel,
Użyłeś literału ciąg bez cudzysłowów. Czy można używać tych bez @operatora i zakładać, że ludzie będą go używać error_reporting(0)?
DankMemes,
@DankMemes Możesz pośrednio założyć, że raportowanie błędów jest wyłączone. Oto dobra lektura: meta.codegolf.stackexchange.com/a/1655/14732
Ismael Miguel
5

Visual Basic 6 / VBA, 42 41 bajtów

MsgBox"It's "&Format(Now,"h:mma/p")&".m."

Używanie MsgBox, ponieważ VB6 nie ma konsoli (chyba że przechwycisz linkowanie, link jako plik wykonywalny konsoli, użyj hacków Windows API i zrobisz inne podejrzane rzeczy).

Szczoteczka do zębów
źródło
3
Dlaczego nie można po prostu zastąpić mprzez .m.? tj. Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
CompuChip,
Nice @ Toothbrush, spodziewałem się, że będzie to rozwiązanie jednobajtowe w CJam;)
CompuChip
4

R, 68 , 59 62 60 55

cat("It's",sub("m",".m",format(Sys.time(),"%I:%M%P.")))

(Dzięki @ Alex.A. I @flodel za komentarze) wyraża aktualny czas systemowy ( Sys.time()), formaty to poprawnie używając %I:%M%Pkombinacji dodaje kropkę na końcu, i zastępuje msię .m..

David Arenburg
źródło
4

Julia, 74 54 43 bajty

print(strftime("It's %I:%M%P\b.m.",time()))

Możesz spróbować online !

time()Zwraca aktualny czas. Po przejściu do strftimeformatu %I:%M%Ppowoduje to HH:MMam/pm, że godziny przypadają na 12-godzinny zegar. Wykonujemy kopię zapasową jednej postaci, \baby usunąć m, pozostawiając ślad alub p, a następnie hals .m.na końcu.

Zaoszczędź 31 bajtów dzięki Glen O!

Alex A.
źródło
Czy mogę to zasugerować? print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")- używa, %Paby dodać małe litery am / pm, aby uniknąć porównania i polecenia podziału.
Glen O
Brak problemów dotyczących pomocy. I nie gadaj się - masz się dobrze. Po prostu czerpię przyjemność z próby wyciśnięcia każdego ostatniego bajtu z kodu. W tym przypadku właśnie doszedłem do wniosku, że próba ominięcia polecenia split i instrukcji warunkowej byłaby korzystna, a następnie przejrzałem używane funkcje. Prawdopodobnie sam nie znalazłbym strftime (próbowałbym wydobyć czas bezpośrednio z time())
Glen O
1
@GlenO Jeśli czerpiesz przyjemność z wyciskania każdego ostatniego bajta kodu, PPCG jest z pewnością właściwym miejscem dla Ciebie!
Alex A.
Nawiasem mówiąc, znalazłem sposób na wyciśnięcie jeszcze kilku bajtów:print(strftime("It's %I:%M%P",time())[1:11],".m.")
Glen O
Właściwie jeszcze lepiej:print(strftime("It's %I:%M%P\b.m.",time()))
Glen O
3

Haskell, 135 bajtów

import Data.Time.Format
import Data.Time.LocalTime
main=getZonedTime>>=putStr.(++".m.").init.formatTime defaultTimeLocale"It's %I:%M%P"

Znalazłem o wiele bardziej zabawne main, to pięć bajtów dłużej:

getZonedTime>>=putStr.formatTime(TimeLocale[][]("a","p")""""""""[])"It's %I:%M%P.m."

Lub 66 bajtów w Uniksie:

import System.Cmd;main=system"date \"+It's %I:%M%P.\"|sed s/m/.m/"
Lynn
źródło
3

Pyth, 38 36 bajtów

s["It's "|%J.d6K12K\:.d7?gJK\p\a".m.

Zaoszczędź 2 bajty dzięki @Jakube!

kirbyfan64sos
źródło
@ Sp3000 W tłumaczu online lub lokalnie?
kirbyfan64sos,
@ Sp3000 Myślę, że znam problem. Podaje czas lokalizacji serwera Pyth i nie obsługuję poprawnie północy. Poczekaj ...
kirbyfan64sos,
@ Sp3000 Naprawiono !!!
kirbyfan64sos
Prawie bijesz moją odpowiedź PHP i odpowiedź Bash Doorknob!
Ismael Miguel,
3

MATLAB, 59 bajtów

disp(sprintf('It''s%s\b.m.',lower(datestr(now,'HH:MMam'))))

Jest 17:38.

Jeśli dozwolone jest umieszczenie spacji między czasem a godziną przedpołudniową / przed południem, może wynosić nawet 52 bajty :

disp(sprintf('It''s%s\b.m.',lower(datestr(now,16))))

Jest 17:39

slvrbld
źródło
Myślę, że wynik musi być05:38p.m.
Ismael Miguel
Zgodnie z komentarzem OP, wiodące zero nie ma znaczenia.
slvrbld
Masz rację. Proszę, zabierz głos!
Ismael Miguel,
Ładny! Nie wiedziałem, że mogę tak użyć \b... Potrzebujesz dodatkowej przestrzeni btw.
Stewie Griffin,
3

Perl 5.10+, 58 62 bajtów

localtime=~/(..)(:..)/;say"It's ",$1%12||12,$2,$1>11?p:a,".m."

Aby uruchomić, należy uruchomić -M5.010flagę wiersza polecenia say.

W moim oryginalnym rozwiązaniu nie uwzględniłem kilku przypadkowych przypadków (mianowicie 00:**i 12:**); naprawiony kosztem 4 dodatkowych bajtów.

Jak to działa

W kontekście skalarnym localtimezwraca ciąg taki jak ten:

Sat Sep 12 03:13:22 2015

Pole minut jest już uzupełnione zerami, co oszczędza niektóre bajty (w kontekście listy localtimezwraca liczby zamiast ciągów, więc należy je uzupełnić samodzielnie).

Tutaj nie jest golfem:

localtime=~/(..)(:..)/;  # Store hour in $1 and minutes in $2
say"It's ",              # Print "It's " followed by...
   $1%12||12,            # hour in 12-hour format
   $2,                   # minutes
   $1>11?p:a,            # "p" if hour > 11, otherwise "a"
   ".m."'                # ".m."

Perl 5.14+, 57 bajtów

(Dla zabawy, ponieważ nieco rozciąga zasady).

say"It's ",(strftime"%l:%M%P",localtime)=~s/m/.m./r

51 bajtów + 6 bajtów dla -MPOSIX. Należy również uruchomić z -M5.010flagą wiersza poleceń, aby uzyskać say.

To rozwiązanie zależy od ustawień regionalnych, więc nie będzie działać na wszystkich systemach. Wykorzystuje również moduł POSIX, który może rozciągać definicję „wbudowanego”, nawet jeśli jest to moduł podstawowy.

Perl 5.14+ jest wymagany dla nieniszczącego rmodyfikatora operatora podstawienia. Równoważne rozwiązanie działające w wersji 5.10+ to:

$_=strftime"%l:%M%P",localtime;chop;say"It's $_.m."

Jest to również 57 bajtów (51 bajtów + 6 bajtów na -MPOSIX).

ThisSuitIsBlackNot
źródło
3

Perl 5, 74 bajtów

Mała prezentacja tego, jak zmienne są oceniane od prawej do lewej.

($s,$m,$h)=localtime;printf"It's %d:%02d%s.m.",$h<13?$h:$h%12,$m,$h<12?a:p

Przy użyciu POSIX: 80 bajtów

use POSIX;$_=strftime"It's %I:%Mx.m.",@_=localtime;$x=$_[1]<13?a:p;s/x/$x/;print

Korzystanie z POSIX w zależności od ustawień regionalnych i przełączników: 54 bajtów (48 + 6)

$_=strftime"It's %I:%M%P",localtime;s/m/.m./;say

Test

$ export LC_TIME="en_DK.UTF-8"
$ perl -MPOSIX -M5.01 whatsthetimechap.pl
It's 3:09p.m.
LukStorms
źródło
1
Można zaoszczędzić kilka bajtów na swoich rozwiązań POSIX stosując -MPOSIXzamiast use POSIX;, upuszczając parens w wywołaniu strftimei wymianie printz say( -M5.010jest bezpłatny ). Co sprowadza twoje ostatnie rozwiązanie do 54 bajtów!
ThisSuitIsBlackNot
Dzięki. Skorzystałem z twojej porady, aby znaleźć najkrótsze rozwiązanie POSIX.
LukStorms,
1
Nadal trzeba liczyć -MPOSIX(6 bajtów), ale można zapisać 2 bajty przez upuszczenie nawiasy: $_=strftime"It's %I:%M%P",localtime;. To daje w sumie 54 bajty, co wciąż jest lepsze niż moje 57-bajtowe rozwiązanie POSIX. Dobra robota!
ThisSuitIsBlackNot
Heh, jeszcze raz dziękuję za uratowanie kilku bajtów.
LukStorms,
3

CJam, 40 bajtów

"It's "et3=CmdCe|\'p'a?':et4=s2Ue[@".m."

Wypróbuj online w interpretatorze CJam .

Jak to działa

"It's " e# Push that string.
et3=    e# Select the fourth element of the date/time array (hours).
Cmd     e# Push quotient and remainder of the hour divided by 12.
Ce|     e# Logical OR with 12 to map 0 to 12.
\'p'a?  e# Select 'p' if the quotient is 1 and 'a' if it is 0.
':      e# Push that character.
et4=    e# Select the fifth element of the date/time array (minutes).
s2Ue[   e# Cast to string and left-pad with zeroes to a length of 2.
@".m."  e# Rotate 'a' or 'p' on top of the stack and push ".m.".
Dennis
źródło
3

Mathematica 49 90 92 90 84 bajtów

-6 bajtów dzięki user202729

Rozwiązanie w Mathematica jest proste, ale nieco niewygodne.

(d=DateString)@{"It's ","Hour12",":","Minute"}<>(d@"AMPM"/."AM"->"a.m."/."PM"->"p.m‌ .")
DavidC
źródło
(Chociaż ten post jest dość stary) StringReplacemożna wyeliminować, oszczędzając 6 bajtów. (d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
user202729,
2

T-SQL (2012+), 67 65 bajtów

SQL Server 2012 w końcu dał nam rozsądną funkcję formatowania dat. Nadal jednak musiałem omijać AM / PM, aby uzyskać właściwy format.

PRINT 'It''s '+LOWER(STUFF(FORMAT(GETDATE(),'hh:mmtt.'),7,0,'.'))

W poprzednich wersjach potrzebowałby czegoś takiego (93 bajty)

PRINT'It''s'+LOWER(STUFF(STUFF(RIGHT(CONVERT(VARCHAR,GETDATE(),109),15),6,7,''),8,0,'.'))+'.'
MickyT
źródło
2

PHP, 49 bajtów

Gdyby to było am/pmzamiast a.m./p.m....

It's <?=@preg_replace(~Фž’¢Ð,~ÛÏÑ,date(~˜Å–ž));

Użyłem wielu nieprzyjemnych bajtów, aby zaoszczędzić trochę długości, więc oto hex:

00000000: 49 74 27 73 20 3C 3F 3D - 40 70 72 65 67 5F 72 65 |It's <?=@preg_re|
00000010: 70 6C 61 63 65 28 7E D0 - A4 9E 92 8F A2 D0 2C 7E |place(~       ,~|
00000020: DB CF D1 2C 64 61 74 65 - 28 7E 98 C5 96 9E 29 29 |   ,date(~    ))|
00000030: 3B                      -                         |;|
00000031;

Wersja do odczytu:

It's <?=preg_replace("/[amp]/", "$0.", date("g:ia"));
DankMemes
źródło
2

C, 103 94 bajty

int main(){time_t r;char b[80];time(&r);strftime(b,80,"It's %I:%M %p",localtime(&r));puts(b);}

Bez golfa

int main()
{
  time_t r;
  char b[80];  
  time(&r);
  strftime(b,80,"It's %I:%M %p",localtime(&r));
  puts(b);
}
Zongor
źródło
2

PHP, 41 bajtów

It's <?=strtr(date('g:ia'),['m'=>'.m.']);

Pierwszy raz w to grałem. Nie jestem pewien, czy mam zaktualizować / edytować poprzednią odpowiedź PHP (49 bajtów), czy po prostu dodać własną ...

fisharebest
źródło
Należy zawsze dodać własne. Komentujesz czyjąś odpowiedź tylko wtedy, gdy widzisz coś, co może zaoszczędzić kilka bajtów. Ale poza tym fajna odpowiedź!
Ismael Miguel,
Nawiasem mówiąc, możesz pisać [m=>'.m.'], co oszczędza 2 bajty. (Ostrzeżenia można zignorować, więc nie przejmuj się nimi).
Ismael Miguel
2

SQL (PostgreSQL), 42 41 bajtów

Kolejny wariant SQL, jednak ten jest w zapytaniu.

select to_char(now(),'"It''s" HH:MIa.m.')

As a note either p.m. or a.m. works to get the am/pm part. The formatting options in PostgreSQL are really quite flexible. Thanks to @manatwork for the tip to move the it's into the format string.

SQLFiddle

MickyT
źródło
So you need to adjust am/pm it manually?
David Arenburg
@DavidArenburg, no it gets it right with either ... but I had to check it out, because it didn't seem right. If you add + time '12:00' after the now() in SQLFiddle it should change the am/pm.
MickyT
1 character shorter: select to_char(now(),'"It''s" HH:MIa.m.')
manatwork
@manatwork, very nice thanks. I wouldn't have thought of trying that.
MickyT
2

CJam, 43 bytes

Having to pad the numbers with zeroes makes this larger than I'd like. In the end, string formatting was the shortest way.

4Z]etf=~Cmd@@'p'a?]"It's %02d:%02d%c.m."\e%

Try it online.

Explanation

   et                                       e# Push local time
4Z]  f=                                     e# Get [minutes hours]
       ~Cmd                                 e# Unwrap array, div+mod hours by 12
           @@'p'a?                          e# Select 'p' or 'a' based on remainder
                  ]"It's %02d:%02d%c.m."\e% e# Print
Andrea Biondo
źródło
1
This fails for both the 12's. Instead of 12:37 it outputs 00:37.
Zach Gates
2

Javascript, 103 bytes

Javascript executed from the console.

d="It's "+new Date().toLocaleTimeString();l=d.length;d.slice(0,l-6)+d.slice(-2,l-1).toLowerCase()+'.m.'

C#, 63 bytes

C# executed from the immediate window.

?"It's "+System.DateTime.Now.ToString("h:MMt").ToLower()+".m.";
DaveMorganTexas
źródło
Also runs as F# ;)
Stachu
You don't need to calculate d.length, you could just write -n and it will calculate from the end, just an FYI. d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.' 90 bytes. And you can save one byte by moving the "It's " string. And a few bytes from a little string shortcut in there. d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.' 79 bytes.
Jan
And if the answer needs to be locale-independent (as some have posted), just use toLocaleTimeString("en-US") 86 bytes.
Jan
2

Bash, 44 characters

Pure Bash, just shell builtins, no ***utils.

printf -vt "It's %(%I:%M%P)T"
echo ${t%m}.m.

Sample run:

bash-4.3$ printf -vt "It's %(%I:%M%P)T";echo ${t%m}.m.
It's 01:04p.m.
manatwork
źródło
2

Powershell, 49 bytes

"It's {0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d

(date).hour/23 seems to work as an index for "ap" because it rounds to 0 for hours less than 12 and 1 for 12 and above.

Danko Durbić
źródło
Should be able to golf off a few characters by instead treating the "p"/"a" as string turned into an implicit char-array -- 51 bytes -- "It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
AdmBorkBork
Your latest "{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d misses the It's at the beginning. If you tack that onto the front, it's the same 49 bytes as "It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
AdmBorkBork
My bad. I've fixed it. Anyway, this version is more "correct", as it only makes a single call to date
Danko Durbić
For what it's worth, I stumbled across the following while researching something else. Apparently [datetime] casts are always en-US. That means something like this "It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m." is possible ... which, granted, is 54 bytes and longer than your current solution, but still an interesting quirk of the language.
AdmBorkBork
@TimmyD Interesting, but it seems it's only casting to DateTime that's en-US, not formatting.
Danko Durbić
2

Locale-dependent

For browser environments that have the locale set to en-CA or any locale that outputs a 12-hour time by default:

CoffeeScript, 81 bytes

alert "It's #{(x=(new Date).toLocaleTimeString().toLowerCase())[..4]} #{x[9]}.m."

JavaScript (ES5), 90 bytes

alert("It's "+(x=(new Date).toLocaleTimeString().toLowerCase()).slice(0,5)+' '+x[9]+".m.")

Locale-independent

CoffeeScript, 113 96 bytes

alert "It's #{(h=(d=new Date).getHours())%12}:#{('0'+d.getMinutes())[-2..]} #{'ap'[+(h>11)]}.m."

Previous:

This one works in all browser environments regardless of locale. Requires Chrome 24+, Firefox 29+, IE 11+, Opera 15+ or any derivatives of such. Does not work in Safari. See Intl.DateTimeFormat.

alert "It's #{new Intl.DateTimeFormat('en',{hour:f='2-digit',minute:f}).format(new Date).toLowerCase()[..-2]}.m."
rink.attendant.6
źródło
The javascript answer gave me: It's 2:59: m.m.
Mwr247
@Mwr247 Which locale is your browser in?
rink.attendant.6
@rinkattendant6 My locale is en-US
Mwr247
2

Swift - 124 102 bytes

import Cocoa
var f=NSDateFormatter()
f.dateFormat="hh:mma"
print("It's \(f.stringFromDate(NSDate()))")
Błażej
źródło
2

C, 154 bytes

#include <time.h>
#define l localtime(&r)
main(){time_t r=time(0);printf("It's %02i:%02i%c.m.",(l->tm_hour+11)%12+1,l->tm_min,(l->tm_hour>=12)?'p':'a');}

In contrast to the other C answer, this one uses the correct "a.m."/"p.m." format. The other poster omitted #include <time.h> – if your compiler allows this, we get down to 136 bytes. Which one should we count?

mindriot
źródło
You're right, in fact all I got was a warning – I got it confused with an error from trying to do without time.h. Editing.
mindriot
1

Moonscript - 56 bytes

print "It's "..(os.date'%I:%M%p'\gsub 'M','.M.')\lower!

Unfortunately the Lua standard library only implements %p for uppercase AM/PM, so I have to call the method lower.

Ryan Russell
źródło
1

SpecBAS - 64 bytes

PRINT "It's ";LOW$(REPLACE$(TIME$(TIME,"h:mm p$"),"M",".M."))

The built-in p$ of the time function returns AM or PM, so this then has to be formatted with REPLACE$ to change it so it has a full stop before/after that letter.

Then the time output had to be converted to lowercase.

Brian
źródło
1

MATLAB, 66 bytes

['It''s' lower(datestr(now,'HH:MMam'))];disp([ans(1:end-1),'.m.'])

Displays:

It's 2:48p.m.
Stewie Griffin
źródło
1

Python 2, 75 67 66 bytes

import time;print"It's %s.m."%time.strftime("%I:%M%p")[:6].lower()

old version, 75 bytes

import time
t=time.strftime("%I:%M%p")
print"It's",t[:5]+t[5].lower()+".m."

old version, 75 bytes

import time
print"It's",time.strftime("%I:%M%p").lower().replace("m",".m.")
Max
źródło
@AlexA. Not working in Python 2 time.strftime at least under windows gives "ValueError: Invalid format string"
Max
@AlexA Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import time;print"It's %s.m."%time.strftime("%I:%M%p")[:6].lower() It's 01:30p.m.`
Max
1

Python 3, 117 87 79 bytes

from datetime import*
print(datetime.now().strftime("It's %I:%M%P")[:-1]+".m.")

This gets the hours and minutes from a 12-hour clock using the format %I:%M, plus am or pm using %P. We then select everything but the last m and append .m..

Saved a few bytes thanks to Ruth Franklin!

Alex A.
źródło
1
As you're only using datetime once, it's 6 bytes shorter to use from datetime import*; h=datetime.now() ...
Ruth Franklin
@RuthFranklin Thanks for the suggestion! I also found a few other ways to shorten it.
Alex A.