var QUESTION_ID=57552,OVERRIDE_USER=42854;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
yyyy-MM-dd hh:mm:ss UTC
ou ce format de date n'a pas d'importance?It's beer o'clock
, mais j'ai résisté.12:32 PM
ou12:32PM
? Au lieu de12:32p.m.
?Réponses:
Bash,
3933 octetsA gaspillé un tas de caractères parce que la spécification requiert
a.m.
oup.m.
tandis que lesdate
sortiesam
oupm
. 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
la source
%P
me donne AM ou PM en majuscules. Je suis sur un Mac si cela fait une différence.%P
donne des minuscules et%p
donne des majuscules (ce qui est un peu ... peu intuitif).date
(sous Linux et al.) Et * BSDdate
(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 vautsed
aussi; mais cette invocation particulière fait partieecho -e "It's $(date +%I:%M%P)\b.m."
- au lieu d'sed
utiliser 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.AppleScript, 198
Parce que AppleScript. Parce que pourquoi pas:
C'était douloureux.
la source
PHP,
3533 octetsUtiliser le mauvais outil pour le travail!
Il supprime simplement le
m
à la fin deam
oupm
, pour permettre d'ajouter les points. La date vient comme00:00am
, et avectrim
elle devient00:00a
.Ancienne réponse (PHP 5.4+ uniquement):
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.
la source
@
opérateur et de supposer que les gens le feront fonctionnererror_reporting(0)
?Visual Basic 6 / VBA,
4241 octetsUtilisation
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 ).la source
m
par.m.
? ieDebug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
R,
68,59626055(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%P
combinaison, ajoute un point à la fin et remplace lem
par.m.
.la source
Julia,
745443 octetsVous pouvez l' essayer en ligne !
La
time()
fonction renvoie l'heure actuelle. Lorsqu'il est passé àstrftime
avec le format%I:%M%P
, cela se traduit parHH:MMam/pm
, où les heures sont par une horloge de 12 heures. Nous sauvegardons un caractère avec\b
pour supprimer lem
, en laissant una
ou un signe de finp
, puis nous plaquons.m.
sur la fin.Enregistré 31 octets grâce à Glen O!
la source
print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")
- utilise%P
pour ajouter les minuscules am / pm, pour éviter la comparaison et la commande de division.time()
)print(strftime("It's %I:%M%P",time())[1:11],".m.")
print(strftime("It's %I:%M%P\b.m.",time()))
Haskell, 135 octets
J'ai trouvé beaucoup plus amusant
main
de cinq octets de plus:Ou 66 octets sous Unix:
la source
Pyth,
3836 octetsSauvegardé 2 octets grâce à @Jakube!
la source
MATLAB, 59 octets
S'il est permis d'avoir un espace entre l'heure et am / pm, cela peut être aussi bas que 52 octets :
la source
05:38p.m.
\b
comme ça ... Vous avez besoin d'un espace supplémentaire entre les deux.Perl 5.10+,
5862 octetsDoit être exécuté avec l'
-M5.010
indicateur de ligne de commande pour obtenirsay
.Je n'ai pas pris en compte quelques cas marginaux dans ma solution d'origine (à savoir,
00:**
et12:**
); fixe au coût de 4 octets supplémentaires.Comment ça fonctionne
Dans un contexte scalaire,
localtime
renvoie une chaîne comme celle-ci: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,
localtime
renvoie des nombres au lieu de chaînes, vous devez donc les remplir vous-même).Ici, il n'est pas golfé:
Perl 5.14+, 57 octets
(Juste pour le plaisir, car cela étire un peu les règles.)
51 octets + 6 octets pour
-MPOSIX
. Doit également être exécuté avec l'-M5.010
indicateur de ligne de commande pour obtenirsay
.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
r
modificateur non destructif de l'opérateur de substitution. Une solution équivalente qui fonctionne sur 5.10+ est:C'est aussi 57 octets (51 octets + 6 octets pour
-MPOSIX
).la source
Perl 5, 74 octets
Une petite vitrine de la façon dont les variables sont évaluées de droite à gauche.
Utilisation de POSIX: 80 octets
Utilisation de POSIX avec la dépendance et les commutateurs de l'heure locale: 54 octets (48 + 6)
Tester
la source
-MPOSIX
au lieu deuse POSIX;
, en supprimant les parens dans votre appel àstrftime
et en les remplaçantprint
parsay
(-M5.010
est gratuit ). Ce qui ramène votre dernière solution à 54 octets!-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é!CJam, 40 octets
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
Mathematica
49 90 92 9084 octets-6 octets grâce à user202729
La solution est simple, mais un peu verbeuse, dans Mathematica.
la source
StringReplace
peut être éliminé, économisez 6 octets.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 octetsSQL 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.
Dans les versions précédentes, il aurait fallu quelque chose comme ça (93 octets)
la source
PHP, 49 octets
Si seulement c'était
am/pm
au lieu dea.m./p.m.
...J'ai utilisé beaucoup d'octets désagréables pour économiser un peu de longueur alors voici l'hexagone:
Version lisible:
la source
C,
10394 octetsNon golfé
la source
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 ...
la source
[m=>'.m.']
, ce qui économise 2 octets. (Les avertissements peuvent être ignorés, alors ne vous inquiétez pas pour eux.)SQL (PostgreSQL),
4241 octetsUne autre variante SQL, cependant celle-ci est dans une requête.
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's
dans la chaîne de format.SQLFiddle
la source
+ time '12:00'
aprèsnow()
dans SQLFiddle, cela devrait changer le am / pm.select to_char(now(),'"It''s" HH:MIa.m.')
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.
Essayez-le en ligne .
Explication
la source
12:37
il sort00:37
.Javascript, 103 octets
Javascript exécuté depuis la console.
C #, 63 octets
C # exécuté à partir de la fenêtre immédiate.
la source
d.length
, vous pouvez simplement écrire-n
et 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.toLocaleTimeString("en-US")
86 octets.Bash, 44 caractères
Pure Bash, juste des shell intégrés, pas d'utils ***.
Exemple d'exécution:
la source
Powershell, 49 octets
(date).hour/23
semble fonctionner comme un indice"ap"
car il arrondit à0
moins de 12 heures et1
à 12 heures et plus.la source
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d
manque leIt'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."
date
[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.Dépendant des paramètres régionaux
Pour les environnements de navigateur dont les paramètres régionaux sont définis sur
en-CA
ou tout paramètre régional qui génère une heure de 12 heures par défaut:CoffeeScript, 81 octets
JavaScript (ES5), 90 octets
Indépendant des paramètres régionaux
CoffeeScript,
11396 octetsPré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
.la source
It's 2:59: m.m.
en-US
Swift -
124102 octetsla source
C, 154 bytes
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?la source
time.h
. Editing.Moonscript - 56 bytes
Unfortunately the Lua standard library only implements %p for uppercase AM/PM, so I have to call the method lower.
la source
SpecBAS - 64 bytes
The built-in
p$
of the time function returns AM or PM, so this then has to be formatted withREPLACE$
to change it so it has a full stop before/after that letter.Then the time output had to be converted to lowercase.
la source
MATLAB, 66 bytes
Displays:
la source
Python 2,
756766 bytesold version, 75 bytes
old version, 75 bytes
la source
Python 3,
1178779 bytesThis gets the hours and minutes from a 12-hour clock using the format
%I:%M
, plusam
orpm
using%P
. We then select everything but the lastm
and append.m.
.Saved a few bytes thanks to Ruth Franklin!
la source
datetime
once, it's 6 bytes shorter to usefrom datetime import*; h=datetime.now() ...