Quelle heure est-il, mon gars?

18

Honnêtement, je ne peux pas croire que ce n'est pas encore une question sur Code Golf, mais ...

Affiche l'heure locale (avec am ou pm) sous forme de chaîne sur la console, précédée de "It's".

Exemple:

Run code....

Production:

It's 12:32p.m.

Le code le plus court gagne.

Code loin!

Classement

Daniel
la source
1
Quel est le format de sortie? Est-ce que ça importe?
mbomb007
1
Non, je veux dire, devrait-il être yyyy-MM-dd hh:mm:ss UTCou ce format de date n'a pas d'importance?
mbomb007
8
Je voulais vraiment mettre en place une réponse qui s'imprime It's beer o'clock, mais j'ai résisté.
MickyT
4
Pouvons-nous utiliser 12:32 PMou 12:32PM? Au lieu de 12:32p.m.?
Stewie Griffin
3
Est-ce 02:32 ou 2:32 si c'est moins de 10:00?
Stewie Griffin

Réponses:

18

Bash, 39 33 octets

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

A gaspillé un tas de caractères parce que la spécification requiert a.m.ou p.m.tandis que les datesorties amou pm. Merci à @DigitalTrauma pour avoir économisé 6 octets!

Ce n'est peut-être pas très portable. Cela fonctionne sur Ubuntu 15.04.

Une solution qui utilise essentiellement la même méthode dans Ruby , qui est étonnamment la même longueur exacte :

Rubis, 39 octets

$><<`date "+It's %I:%M%P"`[0..-3]+'.m.'
Poignée de porte
la source
%Pme donne AM ou PM en majuscules. Je suis sur un Mac si cela fait une différence.
flodel
@flodel fonctionne sur ma machine ™. Sur Ubuntu 15.04, %Pdonne des minuscules et %pdonne des majuscules (ce qui est un peu ... peu intuitif).
Poignée de porte
GNU date(sous Linux et al.) Et * BSD date(où OSX est une variante BSD) ont des options et des comportements extrêmement différents lorsque vous vous aventurez en dehors de l'ensemble de fonctionnalités spécifié par POSIX. Alors peut-être que cette réponse devrait mentionner spécifiquement Bash sous Linux. (Cela vaut sedaussi; mais cette invocation particulière fait partie
intégrante de l'
Sur ma machine (zsh ou bash sous Linux), il affiche "Il est 04h17". quand il est 16h17. Aucun "am" ou "pm"
aditsu
echo -e "It's $(date +%I:%M%P)\b.m."- au lieu d' sedutiliser le retour arrière. Cela ne ressemble pas à une réponse distincte pour moi. De plus, je n'ai pas d'am / pm mais je pense que c'est à cause des paramètres régionaux.
aragaer
13

AppleScript, 198

Parce que AppleScript. Parce que pourquoi pas:

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."

C'était douloureux.

Traumatisme numérique
la source
18
AppleScript est le nouveau Java.
Poignée de porte
8

PHP, 35 33 octets

Utiliser le mauvais outil pour le travail!

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

Il supprime simplement le mà la fin de amou pm, pour permettre d'ajouter les points. La date vient comme 00:00am, et avec trimelle devient 00:00a.


Ancienne réponse (PHP 5.4+ uniquement):

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

Cela fonctionne car vous pouvez déréférencer une valeur renvoyée par une fonction. Ce n'est pas possible en PHP5.3 ou plus ancien.

Ismael Miguel
la source
Ah, intelligent! Vous avez battu ma réponse php
DankMemes
@DankMemes Cela m'a pris un bon moment. Et beaucoup d'expérimentation.
Ismael Miguel,
Vous avez utilisé un littéral de chaîne sans guillemets. Est-il acceptable d'utiliser ceux sans @opérateur et de supposer que les gens le feront fonctionner error_reporting(0)?
DankMemes
@DankMemes Vous pouvez indirectement supposer que le rapport d'erreurs est désactivé. Voici une bonne lecture: meta.codegolf.stackexchange.com/a/1655/14732
Ismael Miguel
5

Visual Basic 6 / VBA, 42 41 octets

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

Utilisation MsgBox, car VB6 n'a pas de console (sauf si vous interceptez la liaison, liez en tant qu'exécutable de la console, utilisez certains hacks de l'API Windows et faites d'autres choses louches ).

Brosse à dents
la source
3
Pourquoi ne remplacez-vous pas simplement mpar .m.? ie Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
CompuChip
Nice @toothbrush, je m'attendais en quelque sorte à ce que ce soit une solution à un octet dans CJam;)
CompuChip
4

R, 68 , 59 62 60 55

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

(Merci à @ Alex.A. Et @flodel pour les commentaires) Prend l'heure actuelle du système ( Sys.time()), la formate correctement en utilisant la %I:%M%Pcombinaison, ajoute un point à la fin et remplace le mpar .m..

David Arenburg
la source
4

Julia, 74 54 43 octets

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

Vous pouvez l' essayer en ligne !

La time()fonction renvoie l'heure actuelle. Lorsqu'il est passé à strftimeavec le format %I:%M%P, cela se traduit par HH:MMam/pm, où les heures sont par une horloge de 12 heures. Nous sauvegardons un caractère avec \bpour supprimer le m, en laissant un aou un signe de fin p, puis nous plaquons .m.sur la fin.

Enregistré 31 octets grâce à Glen O!

Alex A.
la source
Puis-je suggérer cela? print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")- utilise %Ppour ajouter les minuscules am / pm, pour éviter la comparaison et la commande de division.
Glen O
Aucun problème concernant l'aide. Et ne vous découragez pas - vous allez bien. J'apprécie simplement d'essayer d'extraire le dernier octet du code. Dans ce cas, je viens de penser qu'il serait bénéfique d'essayer de contourner la commande split et l'instruction conditionnelle, puis j'ai examiné les fonctions que vous avez utilisées. Je n'aurais probablement pas trouvé de temps de pause moi-même (j'aurais essayé d'extraire le temps directement time())
Glen O
1
@GlenO Si vous profitez de la compression du dernier octet du code, PPCG est certainement le bon endroit pour vous!
Alex A.
Soit dit en passant, j'ai trouvé un moyen d'extraire quelques octets de plus:print(strftime("It's %I:%M%P",time())[1:11],".m.")
Glen O
En fait, encore mieux:print(strftime("It's %I:%M%P\b.m.",time()))
Glen O
3

Haskell, 135 octets

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

J'ai trouvé beaucoup plus amusant mainde cinq octets de plus:

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

Ou 66 octets sous Unix:

import System.Cmd;main=system"date \"+It's %I:%M%P.\"|sed s/m/.m/"
Lynn
la source
3

Pyth, 38 36 octets

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

Sauvegardé 2 octets grâce à @Jakube!

kirbyfan64sos
la source
@ Sp3000 Sur l'interprète en ligne ou localement?
kirbyfan64sos
@ Sp3000 Je pense que je connais le problème. Cela donne l'heure de l'emplacement du serveur Pyth, et je ne gère pas correctement minuit. Tenez ...
kirbyfan64sos
@ Sp3000 Fixed !!!
kirbyfan64sos
Vous battez presque ma réponse PHP et la réponse Bash de Doorknob!
Ismael Miguel
3

MATLAB, 59 octets

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

Il est 17 h 38.

S'il est permis d'avoir un espace entre l'heure et am / pm, cela peut être aussi bas que 52 octets :

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

Il est 17h39

slvrbld
la source
Je pense que la sortie doit être05:38p.m.
Ismael Miguel
Selon le commentaire de OP, le zéro de tête n'a pas d'importance.
slvrbld
Tu as raison. Ici, ayez mon vote positif!
Ismael Miguel,
Agréable! Je ne savais pas que je pouvais utiliser \bcomme ça ... Vous avez besoin d'un espace supplémentaire entre les deux.
Stewie Griffin,
3

Perl 5.10+, 58 62 octets

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

Doit être exécuté avec l' -M5.010indicateur de ligne de commande pour obtenir say.

Je n'ai pas pris en compte quelques cas marginaux dans ma solution d'origine (à savoir, 00:**et 12:**); fixe au coût de 4 octets supplémentaires.

Comment ça fonctionne

Dans un contexte scalaire, localtimerenvoie une chaîne comme celle-ci:

Sat Sep 12 03:13:22 2015

Le champ des minutes est déjà complété par un zéro, ce qui permet d'économiser certains octets (dans le contexte d'une liste, localtimerenvoie des nombres au lieu de chaînes, vous devez donc les remplir vous-même).

Ici, il n'est pas golfé:

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 octets

(Juste pour le plaisir, car cela étire un peu les règles.)

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

51 octets + 6 octets pour -MPOSIX. Doit également être exécuté avec l' -M5.010indicateur de ligne de commande pour obtenir say.

Cette solution dépend de votre environnement local et ne fonctionnera donc pas sur tous les systèmes. Il utilise également le module POSIX, qui pourrait étirer la définition d'un "intégré", même s'il s'agit d'un module principal.

Perl 5.14+ est requis pour le rmodificateur non destructif de l'opérateur de substitution. Une solution équivalente qui fonctionne sur 5.10+ est:

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

C'est aussi 57 octets (51 octets + 6 octets pour -MPOSIX).

ThisSuitIsBlackNot
la source
3

Perl 5, 74 octets

Une petite vitrine de la façon dont les variables sont évaluées de droite à gauche.

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

Utilisation de POSIX: 80 octets

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

Utilisation de POSIX avec la dépendance et les commutateurs de l'heure locale: 54 octets (48 + 6)

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

Tester

$ export LC_TIME="en_DK.UTF-8"
$ perl -MPOSIX -M5.01 whatsthetimechap.pl
It's 3:09p.m.
LukStorms
la source
1
Vous pouvez enregistrer quelques octets sur vos solutions POSIX en utilisant -MPOSIXau lieu de use POSIX;, en supprimant les parens dans votre appel à strftimeet en les remplaçant printpar say( -M5.010est gratuit ). Ce qui ramène votre dernière solution à 54 octets!
ThisSuitIsBlackNot
Merci. J'ai utilisé vos conseils pour la solution POSIX la plus courte.
LukStorms du
1
Vous devez toujours compter -MPOSIX(6 octets), mais vous pouvez enregistrer 2 octets en laissant tomber les parenthèses: $_=strftime"It's %I:%M%P",localtime;. Cela donne 54 octets au total, ce qui est encore mieux que ma solution POSIX de 57 octets. Bien joué!
ThisSuitIsBlackNot
Heh, merci encore d'avoir sauvé quelques octets.
LukStorms du
3

CJam, 40 octets

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

Essayez-le en ligne dans l' interpréteur CJam .

Comment ça fonctionne

"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
la source
3

Mathematica 49 90 92 90 84 octets

-6 octets grâce à user202729

La solution est simple, mais un peu verbeuse, dans Mathematica.

(d=DateString)@{"It's ","Hour12",":","Minute"}<>(d@"AMPM"/."AM"->"a.m."/."PM"->"p.m‌ .")
DavidC
la source
(Bien que ce message soit assez ancien) StringReplacepeut être éliminé, économisez 6 octets. (d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
user202729
2

T-SQL (2012+), 67 65 octets

SQL Server 2012 nous a finalement donné une fonction de formatage raisonnable pour les dates. Je devais quand même me débrouiller avec l'AM / PM pour obtenir le bon format.

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

Dans les versions précédentes, il aurait fallu quelque chose comme ça (93 octets)

PRINT'It''s'+LOWER(STUFF(STUFF(RIGHT(CONVERT(VARCHAR,GETDATE(),109),15),6,7,''),8,0,'.'))+'.'
MickyT
la source
2

PHP, 49 octets

Si seulement c'était am/pmau lieu de a.m./p.m....

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

J'ai utilisé beaucoup d'octets désagréables pour économiser un peu de longueur alors voici l'hexagone:

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;

Version lisible:

It's <?=preg_replace("/[amp]/", "$0.", date("g:ia"));
DankMemes
la source
2

C, 103 94 octets

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

Non golfé

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

PHP, 41 octets

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

C'est la première fois que je joue ça. Je ne sais pas si je suis censé mettre à jour / modifier la réponse PHP précédente (49 octets) ou simplement ajouter la mienne ...

fisharebest
la source
Tu devrais toujours ajouter le vôtre. Vous ne commentez la réponse de quelqu'un que si vous voyez quelque chose qui peut lui faire économiser quelques octets. Mais à part ça, belle réponse!
Ismael Miguel,
Au fait, vous pouvez écrire [m=>'.m.'], ce qui économise 2 octets. (Les avertissements peuvent être ignorés, alors ne vous inquiétez pas pour eux.)
Ismael Miguel
2

SQL (PostgreSQL), 42 41 octets

Une autre variante SQL, cependant celle-ci est dans une requête.

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

En tant que note pm ou am fonctionne pour obtenir la partie am / pm. Les options de formatage dans PostgreSQL sont vraiment assez flexibles. Merci à @manatwork pour l'astuce pour déplacer le it'sdans la chaîne de format.

SQLFiddle

MickyT
la source
Vous devez donc l'ajuster manuellement am / pm?
David Arenburg
@DavidArenburg, non, ça va bien avec les deux ... mais j'ai dû le vérifier, parce que ça ne semblait pas bien. Si vous ajoutez + time '12:00'après now()dans SQLFiddle, cela devrait changer le am / pm.
MickyT
1 caractère plus court:select to_char(now(),'"It''s" HH:MIa.m.')
manatwork
@manatwork, merci beaucoup. Je n'aurais pas pensé essayer ça.
MickyT
2

CJam, 43 octets

Le fait de devoir remplir les chiffres avec des zéros rend cela plus grand que je ne le souhaiterais. En fin de compte, le formatage des chaînes était le moyen le plus court.

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

Essayez-le en ligne .

Explication

   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
la source
1
Cela échoue pour les deux 12. Au lieu de cela, 12:37il sort 00:37.
Zach Gates du
2

Javascript, 103 octets

Javascript exécuté depuis la console.

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

C #, 63 octets

C # exécuté à partir de la fenêtre immédiate.

?"It's "+System.DateTime.Now.ToString("h:MMt").ToLower()+".m.";
DaveMorganTexas
la source
Fonctionne
Vous n'avez pas besoin de calculer d.length, vous pouvez simplement écrire -net il calculera à partir de la fin, juste un FYI. d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'90 octets. Et vous pouvez enregistrer un octet en déplaçant la "It's "chaîne. Et quelques octets d'un petit raccourci de chaîne là-dedans. d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'79 octets.
Jan
Et si la réponse doit être indépendante des paramètres régionaux (comme certains l'ont signalé), utilisez simplement toLocaleTimeString("en-US")86 octets.
Jan
2

Bash, 44 caractères

Pure Bash, juste des shell intégrés, pas d'utils ***.

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

Exemple d'exécution:

bash-4.3$ printf -vt "It's %(%I:%M%P)T";echo ${t%m}.m.
It's 01:04p.m.
homme au travail
la source
2

Powershell, 49 octets

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

(date).hour/23semble fonctionner comme un indice "ap"car il arrondit à 0moins de 12 heures et 1à 12 heures et plus.

Danko Durbić
la source
Devrait être capable de jouer avec quelques caractères en traitant le "p" / "a" comme une chaîne transformée en un tableau de caractères implicite - 51 octets -"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
AdmBorkBork
Votre dernier "{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$dmanque le It's au début. Si vous collez cela sur le devant, ce sont les mêmes 49 octets que"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
AdmBorkBork
Ma faute. Je l'ai corrigé. Quoi qu'il en soit, cette version est plus "correcte", car elle ne fait qu'un seul appel àdate
Danko Durbić
Pour ce que ça vaut, je suis tombé sur les éléments suivants en recherchant autre chose. Apparemment, les [datetime]lancers sont toujours en-US . Cela signifie que quelque chose comme ça "It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."est possible ... qui, accordé, est de 54 octets et plus long que votre solution actuelle, mais reste une bizarrerie intéressante du langage.
AdmBorkBork
@TimmyD Intéressant, mais il semble que ce n'est que du casting vers DateTime qui est en-US, pas du formatage.
Danko Durbić
2

Dépendant des paramètres régionaux

Pour les environnements de navigateur dont les paramètres régionaux sont définis sur en-CAou tout paramètre régional qui génère une heure de 12 heures par défaut:

CoffeeScript, 81 octets

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

JavaScript (ES5), 90 octets

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

Indépendant des paramètres régionaux

CoffeeScript, 113 96 octets

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

Précédent:

Celui-ci fonctionne dans tous les environnements de navigateur indépendamment des paramètres régionaux. Nécessite Chrome 24+, Firefox 29+, IE 11+, Opera 15+ ou tout dérivé de ceux-ci. Ne fonctionne pas dans Safari. Tu vois Intl.DateTimeFormat.

alert "It's #{new Intl.DateTimeFormat('en',{hour:f='2-digit',minute:f}).format(new Date).toLowerCase()[..-2]}.m."
rink.attendant.6
la source
La réponse javascript m'a donné:It's 2:59: m.m.
Mwr247
@ Mwr247 Dans quel environnement local se trouve votre navigateur?
rink.attendant.6
@ rinkattendant6 Mon locale esten-US
Mwr247
2

Swift - 124 102 octets

import Cocoa
var f=NSDateFormatter()
f.dateFormat="hh:mma"
print("It's \(f.stringFromDate(NSDate()))")
Błażej
la source
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
la source
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
la source
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
la source
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
la source
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
la source
@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.
la source
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.