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 esse formato de data não importa?It's beer o'clock
, mas resisti.12:32 PM
ou12:32PM
? Em vez de12:32p.m.
?Respostas:
Bash,
3933 bytesDesperdiçou um monte de caracteres porque a especificação requer
a.m.
oup.m.
enquantodate
produzam
oupm
. Obrigado a @DigitalTrauma por salvar 6 bytes!Isso pode não ser muito portátil. Funciona no Ubuntu 15.04.
Uma solução que usa essencialmente o mesmo método em Ruby
, que surpreendentemente tem exatamente o mesmo comprimento:Ruby, 39 bytes
fonte
%P
me dá maiúsculas AM ou PM. Estou no mac, se isso faz diferença.%P
fornece letras minúsculas e%p
letras maiúsculas (o que é um pouco ... não intuitivo).date
(no Linux et al.) E * BSDdate
(onde OSX é uma variante BSD) têm opções e comportamentos muito diferentes quando você se aventura fora do conjunto de recursos especificado pelo POSIX. Talvez essa resposta deva mencionar especificamente o Bash no Linux. (Isso vale parased
muito, mas esta invocação particular é firmemente dentro do conjunto de recursos seguro e portátil.)echo -e "It's $(date +%I:%M%P)\b.m."
- em vez desed
usar backspace. Não parece uma resposta separada para mim. Também não tenho am / pm, mas acho que é por causa da localidade.AppleScript, 198
Porque AppleScript. Porque porque não:
Isso foi doloroso.
fonte
PHP,
3533 bytesUsando a ferramenta errada para o trabalho!
Ele simplesmente remove o
m
final deam
oupm
para permitir adicionar os pontos. A data chega como00:00am
, e comtrim
ela se torna00:00a
.Resposta antiga (somente PHP 5.4+):
Isso funciona porque você pode des-referenciar um valor retornado de uma função. Isso não é possível no PHP5.3 ou mais antigo.
fonte
@
operador e assumir que as pessoas o executamerror_reporting(0)
?Visual Basic 6 / VBA,
42.41 bytesUsando
MsgBox
, como o VB6 não possui um console (a menos que você intercepte o link, o link como executável do console, use alguns hacks da API do Windows e faça outras coisas desonestas )).fonte
m
por.m.
? isto é,Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
R,
68,59626055(Graças a @ Alex.A. E @flodel pelos comentários) Leva a hora atual do sistema (
Sys.time()
), formata-a corretamente usando a%I:%M%P
combinação, adiciona um ponto no final e substituim
por.m.
.fonte
Julia,
745443 bytesVocê pode experimentá-lo online !
A
time()
função retorna a hora atual. Quando passado parastrftime
o formato%I:%M%P
, isso resulta emHH:MMam/pm
onde as horas são por um relógio de 12 horas. Fazemos o backup de um personagem com\b
para remover om
, deixando um rastroa
oup
, em seguida, aderimos.m.
ao final.Economizou 31 bytes graças a Glen O!
fonte
print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")
- usa%P
para adicionar minúsculas am / pm, para evitar a comparação e o comando split.time()
)print(strftime("It's %I:%M%P",time())[1:11],".m.")
print(strftime("It's %I:%M%P\b.m.",time()))
Haskell, 135 bytes
Eu achei muito mais divertido
main
, com cinco bytes a mais:Ou 66 bytes no Unix:
fonte
Pitão,
3836 bytesGuardado 2 bytes graças a @Jakube!
fonte
MATLAB, 59 bytes
Se for permitido ter um espaço em branco entre horário e am / pm, pode ser tão baixo quanto 52 bytes :
fonte
05:38p.m.
\b
assim ... Você precisa de um espaço extra entre.Perl 5.10+,
5862 bytesDeve ser executado com o
-M5.010
sinalizador de linha de comando para obtersay
.Não contei alguns casos extremos na minha solução original (ou seja,
00:**
e12:**
); corrigido a um custo de 4 bytes adicionais.Como funciona
No contexto escalar,
localtime
retorna uma string como esta:O campo de minutos já está preenchido com zero, o que economiza alguns bytes (no contexto da lista,
localtime
retorna números em vez de cadeias, portanto, você mesmo deve preenchê-los).Aqui está não destruído:
Perl 5.14+, 57 bytes
(Apenas por diversão, pois estende um pouco as regras.)
51 bytes + 6 bytes para
-MPOSIX
. Também deve ser executado com o-M5.010
sinalizador de linha de comando para obtersay
.Esta solução depende da sua localidade, portanto, não funcionará em todos os sistemas. Ele também usa o módulo POSIX, que pode estar ampliando a definição de "embutido", mesmo que seja um módulo principal.
Perl 5.14+ é necessário para o
r
modificador não destrutivo para o operador de substituição. Uma solução equivalente que funciona no 5.10+ é:Isso também é 57 bytes (51 bytes + 6 bytes para
-MPOSIX
).fonte
Perl 5, 74 bytes
Uma pequena demonstração de como as variáveis são avaliadas da direita para a esquerda.
Usando POSIX: 80 bytes
Usando POSIX com dependência de locale de tempo e comutadores: 54 bytes (48 + 6)
Teste
fonte
-MPOSIX
vez deuse POSIX;
, descartando os parênteses em sua chamadastrftime
e substituindoprint
porsay
(-M5.010
é gratuito ). O que reduz sua última solução para 54 bytes!-MPOSIX
(6 bytes), mas você pode salvar 2 bytes, largando os parênteses:$_=strftime"It's %I:%M%P",localtime;
. Isso totaliza 54 bytes, o que ainda é melhor do que minha solução POSIX de 57 bytes. Bem feito!CJam, 40 bytes
Experimente on-line no intérprete CJam .
Como funciona
fonte
Mathematica
49 90 92 9084 bytes-6 bytes graças a user202729
A solução é simples, mas um pouco prolixo, no Mathematica.
fonte
StringReplace
pode ser eliminado, salve 6 bytes.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 bytesO SQL Server 2012 finalmente nos deu uma função de formatação razoável para datas. Eu ainda tinha que mexer com o AM / PM para obter o formato certo.
Nas versões anteriores, seria necessário algo como isto (93 bytes)
fonte
PHP, 49 bytes
Se fosse
am/pm
em vez dea.m./p.m.
...Eu usei muitos bytes desagradáveis para economizar um pouco de comprimento, então aqui está o hex:
Versão legível:
fonte
C,
10394 bytesUngolfed
fonte
PHP, 41 bytes
It's <?=strtr(date('g:ia'),['m'=>'.m.']);
Primeira vez que joguei isso. Não tenho certeza se devo atualizar / editar a resposta PHP anterior (49 bytes) ou apenas adicionar minha própria ...
fonte
[m=>'.m.']
, o que economiza 2 bytes. (Os avisos podem ser ignorados, por isso, não se preocupe com eles.)SQL (PostgreSQL),
4241 bytesOutra variante SQL, porém esta está em uma consulta.
Como nota, pm ou am trabalha para obter a parte am / pm. As opções de formatação no PostgreSQL são realmente bastante flexíveis. Obrigado a @manatwork pela dica de mover o
it's
string de formato.SQLFiddle
fonte
+ time '12:00'
após onow()
no SQLFiddle, ele deve alterar o valor am / pm.select to_char(now(),'"It''s" HH:MIa.m.')
CJam, 43 bytes
Ter que preencher os números com zeros torna isso maior do que eu gostaria. No final, a formatação de strings foi a maneira mais curta.
Experimente online .
Explicação
fonte
12:37
sair00:37
.Javascript, 103 bytes
Javascript executado a partir do console.
C #, 63 bytes
C # executado a partir da janela imediata.
fonte
d.length
, basta escrever-n
e ele calculará a partir do final, apenas um FYI.d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'
90 bytes. E você pode salvar um byte movendo a"It's "
string. E alguns bytes de um pequeno atalho de string lá.d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'
79 bytes.toLocaleTimeString("en-US")
86 bytes.Bash, 44 caracteres
Pure Bash, apenas shell builtins, sem *** utils.
Exemplo de execução:
fonte
Powershell, 49 bytes
(date).hour/23
parece funcionar como um índice para,"ap"
porque arredonda0
para horas inferiores a 12 e1
para 12 e acima.fonte
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d
falhamIt's
no início. Se você colocar isso na frente, são os mesmos 49 bytes que"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
date
[datetime]
elencos são sempre nos EUA . Isso significa que algo como isso"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."
é possível ... que, concedido, tem 54 bytes e mais que a sua solução atual, mas ainda é uma peculiaridade interessante do idioma.Depende da localidade
Para ambientes de navegador que possuem o código de idioma definido como
en-CA
ou qualquer código de idioma que produza um tempo de 12 horas por padrão:CoffeeScript, 81 bytes
JavaScript (ES5), 90 bytes
Independente da localidade
CoffeeScript,
11396 bytesAnterior:
Este funciona em todos os ambientes do navegador, independentemente da localidade. Requer o Chrome 24+, Firefox 29+, IE 11+, Opera 15+ ou quaisquer derivados deles. Não funciona no Safari. Veja
Intl.DateTimeFormat
.fonte
It's 2:59: m.m.
en-US
Swift -
124102 bytesfonte
C, 154 bytes
Em contraste com a outra resposta C, esta usa o formato correto "am" / "pm". O outro pôster foi omitido
#include <time.h>
- se o seu compilador permitir, reduziremos para 136 bytes. Qual deles devemos contar?fonte
time.h
. Edição.Moonscript - 56 bytes
Infelizmente, a biblioteca padrão Lua implementa apenas% p para AM / PM maiúsculo, então eu tenho que chamar o método mais baixo.
fonte
SpecBAS - 64 bytes
A função incorporada
p$
da hora retorna AM ou PM; portanto, isso deve ser formatado comREPLACE$
para alterá-la, para ter um ponto final antes / depois dessa letra.Depois, a saída de tempo teve que ser convertida para minúscula.
fonte
MATLAB, 66 bytes
Exibe:
fonte
Python 2,
756766 bytesversão antiga, 75 bytes
versão antiga, 75 bytes
fonte
Python 3,
1178779 bytesIsso obtém as horas e os minutos de um relógio de 12 horas usando o formato
%I:%M
, maisam
oupm
usando%P
. Em seguida, selecionamos tudo, exceto o último,m
e acrescentamos.m.
.Economizei alguns bytes graças a Ruth Franklin!
fonte
datetime
uma vez, é 6 bytes mais curto para usarfrom datetime import*; h=datetime.now() ...