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
czy ten format daty nie ma znaczenia?It's beer o'clock
, ale się opierałem.12:32 PM
lub12:32PM
? Zamiast12:32p.m.
?Odpowiedzi:
Bash,
3933 bajtówZmarnowałem kilka znaków, ponieważ specyfikacja wymaga
a.m.
lubp.m.
podczasdate
wyjściaam
lubpm
. 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
źródło
%P
daje mi wielkie litery AM lub PM. Jestem na komputerze Mac, jeśli to robi różnicę.%P
daje małe litery i%p
daje wielkie litery (co jest trochę ... nieintuicyjne).date
(w Linuksie i in.) I * BSDdate
(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. (Tosed
samo dotyczy; ale ta konkretna inwokacja należy do bezpiecznego i przenośnego zestawu funkcji).echo -e "It's $(date +%I:%M%P)\b.m."
- zamiastsed
uż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.AppleScript, 198
Ponieważ AppleScript. Bo czemu nie:
To było bolesne.
źródło
PHP,
3533 bajtówUżywanie niewłaściwego narzędzia do pracy!
Po prostu usuwa
m
końcówkęam
lubpm
, aby umożliwić dodawanie kropek. Data przychodzi jako00:00am
i wraz ztrim
nią staje się00:00a
.Stara odpowiedź (tylko PHP 5.4+):
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.
źródło
@
operatora i zakładać, że ludzie będą go używaćerror_reporting(0)
?Visual Basic 6 / VBA,
4241 bajtówUż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).źródło
m
przez.m.
? tj.Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
R,
68,59626055(Dzięki @ Alex.A. I @flodel za komentarze) wyraża aktualny czas systemowy (
Sys.time()
), formaty to poprawnie używając%I:%M%P
kombinacji dodaje kropkę na końcu, i zastępujem
się.m.
.źródło
Julia,
745443 bajtyMożesz spróbować online !
time()
Zwraca aktualny czas. Po przejściu dostrftime
formatu%I:%M%P
powoduje toHH:MMam/pm
, że godziny przypadają na 12-godzinny zegar. Wykonujemy kopię zapasową jednej postaci,\b
aby usunąćm
, pozostawiając ślada
lubp
, a następnie hals.m.
na końcu.Zaoszczędź 31 bajtów dzięki Glen O!
źródło
print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")
- używa,%P
aby dodać małe litery am / pm, aby uniknąć porównania i polecenia podziału.time()
)print(strftime("It's %I:%M%P",time())[1:11],".m.")
print(strftime("It's %I:%M%P\b.m.",time()))
Haskell, 135 bajtów
Znalazłem o wiele bardziej zabawne
main
, to pięć bajtów dłużej:Lub 66 bajtów w Uniksie:
źródło
Pyth,
3836 bajtówZaoszczędź 2 bajty dzięki @Jakube!
źródło
MATLAB, 59 bajtów
Jeśli dozwolone jest umieszczenie spacji między czasem a godziną przedpołudniową / przed południem, może wynosić nawet 52 bajty :
źródło
05:38p.m.
\b
... Potrzebujesz dodatkowej przestrzeni btw.Perl 5.10+,
5862 bajtówAby uruchomić, należy uruchomić
-M5.010
flagę wiersza poleceniasay
.W moim oryginalnym rozwiązaniu nie uwzględniłem kilku przypadkowych przypadków (mianowicie
00:**
i12:**
); naprawiony kosztem 4 dodatkowych bajtów.Jak to działa
W kontekście skalarnym
localtime
zwraca ciąg taki jak ten:Pole minut jest już uzupełnione zerami, co oszczędza niektóre bajty (w kontekście listy
localtime
zwraca liczby zamiast ciągów, więc należy je uzupełnić samodzielnie).Tutaj nie jest golfem:
Perl 5.14+, 57 bajtów
(Dla zabawy, ponieważ nieco rozciąga zasady).
51 bajtów + 6 bajtów dla
-MPOSIX
. Należy również uruchomić z-M5.010
flagą 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
r
modyfikatora operatora podstawienia. Równoważne rozwiązanie działające w wersji 5.10+ to:Jest to również 57 bajtów (51 bajtów + 6 bajtów na
-MPOSIX
).źródło
Perl 5, 74 bajtów
Mała prezentacja tego, jak zmienne są oceniane od prawej do lewej.
Przy użyciu POSIX: 80 bajtów
Korzystanie z POSIX w zależności od ustawień regionalnych i przełączników: 54 bajtów (48 + 6)
Test
źródło
-MPOSIX
zamiastuse POSIX;
, upuszczając parens w wywołaniustrftime
i wymianieprint
zsay
(-M5.010
jest bezpłatny ). Co sprowadza twoje ostatnie rozwiązanie do 54 bajtów!-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!CJam, 40 bajtów
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Mathematica
49 90 92 9084 bajtów-6 bajtów dzięki user202729
Rozwiązanie w Mathematica jest proste, ale nieco niewygodne.
źródło
StringReplace
można wyeliminować, oszczędzając 6 bajtów.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 bajtówSQL 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.
W poprzednich wersjach potrzebowałby czegoś takiego (93 bajty)
źródło
PHP, 49 bajtów
Gdyby to było
am/pm
zamiasta.m./p.m.
...Użyłem wielu nieprzyjemnych bajtów, aby zaoszczędzić trochę długości, więc oto hex:
Wersja do odczytu:
źródło
C,
10394 bajtyBez golfa
źródło
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ą ...
źródło
[m=>'.m.']
, co oszczędza 2 bajty. (Ostrzeżenia można zignorować, więc nie przejmuj się nimi).SQL (PostgreSQL),
4241 bajtówKolejny wariant SQL, jednak ten jest w zapytaniu.
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
źródło
+ time '12:00'
after thenow()
in SQLFiddle it should change the am/pm.select to_char(now(),'"It''s" HH:MIa.m.')
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.
Try it online.
Explanation
źródło
12:37
it outputs00:37
.Javascript, 103 bytes
Javascript executed from the console.
C#, 63 bytes
C# executed from the immediate window.
źródło
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.toLocaleTimeString("en-US")
86 bytes.Bash, 44 characters
Pure Bash, just shell builtins, no ***utils.
Sample run:
źródło
Powershell, 49 bytes
(date).hour/23
seems to work as an index for"ap"
because it rounds to0
for hours less than 12 and1
for 12 and above.źródło
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d
misses theIt'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."
date
[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.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
JavaScript (ES5), 90 bytes
Locale-independent
CoffeeScript,
11396 bytesPrevious:
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
.źródło
It's 2:59: m.m.
en-US
Swift -
124102 bytesźródło
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?źródło
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.
źródło
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.
źródło
MATLAB, 66 bytes
Displays:
źródło
Python 2,
756766 bytesold version, 75 bytes
old version, 75 bytes
źródło
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!
źródło
datetime
once, it's 6 bytes shorter to usefrom datetime import*; h=datetime.now() ...