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
atau apakah format tanggal itu tidak penting?It's beer o'clock
, tetapi saya menolak.12:32 PM
atau12:32PM
? Bukan12:32p.m.
?Jawaban:
Bash,
3933 byteMenyia-nyiakan banyak karakter karena spec membutuhkan
a.m.
ataup.m.
saatdate
outputam
ataupm
. Terima kasih kepada @DigitalTrauma karena telah menghemat 6 byte!Ini mungkin tidak terlalu portabel. Ini bekerja di Ubuntu 15.04.
Sebuah solusi yang pada dasarnya menggunakan metode yang sama di Ruby
, yang secara mengejutkan sama panjangnya:Ruby, 39 byte
sumber
%P
memberi saya huruf besar AM atau PM. Saya menggunakan mac jika ada bedanya.%P
beri huruf kecil, dan%p
beri huruf besar (yang agak ... tidak intuitif).date
(di Linux et al.) Dan * BSDdate
(di mana OSX adalah salah satu varian BSD) memiliki opsi dan perilaku yang sangat berbeda ketika Anda menjelajah di luar set fitur yang ditentukan oleh POSIX. Jadi mungkin jawaban ini harus secara khusus menyebutkan Bash di Linux. (Itu berlakused
juga; tetapi permohonan khusus ini dengan kuat dalam set fitur yang aman dan portabel.)echo -e "It's $(date +%I:%M%P)\b.m."
- Alih-alihsed
menggunakan backspace. Tidak terlihat seperti jawaban yang terpisah untuk saya. Juga saya tidak punya pagi / malam tapi saya pikir itu karena lokal.AppleScript, 198
Karena AppleScript. Karena mengapa tidak:
Itu menyakitkan.
sumber
PHP,
3533 byteMenggunakan alat yang salah untuk pekerjaan itu!
Itu hanya menghapus
m
di akhiram
ataupm
, untuk memungkinkan untuk menambahkan titik-titik. Tanggal datang sebagai00:00am
, dan dengantrim
itu menjadi00:00a
.Jawaban lama (hanya PHP 5.4+):
Ini berfungsi karena Anda bisa mende-referensi nilai yang dikembalikan dari suatu fungsi. Ini tidak mungkin di PHP5.3 atau lebih lama.
sumber
@
operator dan menganggap orang akan menjalankannyaerror_reporting(0)
?Visual Basic 6 / VBA,
4241 byteMenggunakan
MsgBox
, karena VB6 tidak memiliki konsol (kecuali Anda mencegat tautan, tautan sebagai konsol yang dapat dieksekusi, gunakan beberapa peretasan API Windows, dan lakukan beberapa hal cerdik lainnya ).sumber
m
dengan.m.
? yaituDebug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
R,
68,59626055(Terima kasih kepada @ Alex.A. Dan @flodel untuk komentarnya) Mengambil waktu sistem saat ini (
Sys.time()
), memformatnya dengan benar menggunakan%I:%M%P
kombinasi, menambahkan sebuah titik di bagian akhir, dan menggantikannyam
dengan.m.
.sumber
Julia,
745443 byteAnda dapat mencobanya secara online !
The
time()
mengembalikan fungsi waktu saat ini. Ketika diteruskan kestrftime
dengan format%I:%M%P
, ini menghasilkanHH:MMam/pm
, di mana jam adalah per jam 12 jam. Kami mencadangkan satu karakter dengan\b
untuk menghapusm
, meninggalkan jejaka
ataup
, lalu.m.
menempelkannya di akhir.Disimpan 31 byte berkat Glen O!
sumber
print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")
- digunakan%P
untuk menambahkan huruf kecil am / pm, untuk menghindari perbandingan dan perintah 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 byte
Saya menemukan jauh lebih lucu
main
yaitu lima byte lebih lama:Atau 66 byte di Unix:
sumber
Pyth,
3836 byteDisimpan 2 byte berkat @Jakube!
sumber
MATLAB, 59 byte
Jika diizinkan untuk memiliki spasi putih antara waktu dan am / pm, maka itu bisa serendah 52 byte :
sumber
05:38p.m.
\b
seperti itu ... Anda memerlukan ruang ekstra btw.Perl 5.10+,
5862 byteHarus dijalankan dengan
-M5.010
bendera baris perintah untuk mendapatkansay
.Saya tidak memperhitungkan beberapa kasus tepi dalam solusi asli saya (yaitu,
00:**
dan12:**
); diperbaiki dengan biaya tambahan 4 byte.Bagaimana itu bekerja
Dalam konteks skalar,
localtime
mengembalikan string seperti ini:Bidang menit sudah berlapis-nol, yang menyimpan beberapa byte (dalam konteks daftar,
localtime
mengembalikan angka alih-alih string, sehingga Anda harus menambahkannya sendiri).Ini dia ungolfed:
Perl 5.14+, 57 byte
(Hanya untuk bersenang-senang, karena sedikit memperluas aturan.)
51 byte + 6 byte untuk
-MPOSIX
. Juga harus dijalankan dengan-M5.010
bendera baris perintah untuk mendapatkansay
.Solusi ini tergantung pada lokal Anda, jadi tidak akan berfungsi pada semua sistem. Itu juga menggunakan modul POSIX, yang mungkin memperluas definisi "built-in", meskipun itu adalah modul inti.
Perl 5.14+ diperlukan untuk
r
pengubah non-destruktif ke operator substitusi. Solusi setara yang bekerja pada 5.10+ adalah:Ini juga 57 byte (51 byte + 6 byte untuk
-MPOSIX
).sumber
Perl 5, 74 byte
Sebuah showcase kecil tentang bagaimana variabel dievaluasi dari kanan ke kiri.
Menggunakan POSIX: 80 byte
Menggunakan POSIX dengan ketergantungan lokal waktu & sakelar: 54 byte (48 + 6)
Uji
sumber
-MPOSIX
alih-alihuse POSIX;
, menjatuhkan parens ke panggilan Andastrftime
, dan menggantiprint
dengansay
(-M5.010
gratis ). Yang membawa solusi terakhir Anda ke 54 byte!-MPOSIX
(6 byte), tetapi Anda dapat menghemat 2 byte dengan menjatuhkan kurung:$_=strftime"It's %I:%M%P",localtime;
. Itu memberikan total 54 byte, yang masih lebih baik daripada solusi POSIX 57-byte saya. Sudah selesai dilakukan dengan baik!CJam, 40 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Mathematica
49 90 92 9084 byte-6 byte terima kasih kepada pengguna202729
Solusinya mudah, tetapi sedikit bertele-tele, di Mathematica.
sumber
StringReplace
dapat dihilangkan, simpan 6 byte.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 byteSQL Server 2012 akhirnya memberi kami fungsi format yang wajar untuk tanggal. Saya masih harus berkutat dengan AM / PM untuk mendapatkan format yang benar.
Dalam versi sebelumnya akan membutuhkan sesuatu seperti ini (93 byte)
sumber
PHP, 49 byte
Kalau saja itu
am/pm
bukana.m./p.m.
...Saya menggunakan banyak byte jahat untuk menghemat sedikit panjang jadi inilah hex:
Versi yang dapat dibaca:
sumber
C,
10394 byteTidak disatukan
sumber
PHP, 41 byte
It's <?=strtr(date('g:ia'),['m'=>'.m.']);
Pertama kali saya memainkan ini. Tidak yakin apakah saya harus memperbarui / mengedit jawaban PHP sebelumnya (49 byte) atau hanya menambahkan ...
sumber
[m=>'.m.']
, yang menghemat 2 byte. (Peringatan dapat diabaikan, jadi, jangan khawatir tentang mereka.)SQL (PostgreSQL),
4241 byteVarian SQL lain, namun yang ini ada dalam kueri.
Sebagai catatan pm atau am berfungsi untuk mendapatkan bagian am / pm. Opsi pemformatan di PostgreSQL benar-benar sangat fleksibel. Terima kasih kepada @manatwork untuk tip untuk memindahkannya
it's
ke format string.SQLFiddle
sumber
+ time '12:00'
setelahnow()
dalam SQLFiddle itu harus mengubah am / pm.select to_char(now(),'"It''s" HH:MIa.m.')
CJam, 43 byte
Harus mengisi angka dengan nol membuat ini lebih besar dari yang saya inginkan. Pada akhirnya, pemformatan string adalah cara terpendek.
Cobalah online .
Penjelasan
sumber
12:37
itu output00:37
.Javascript, 103 byte
Javascript dijalankan dari konsol.
C #, 63 byte
C # dieksekusi dari jendela langsung.
sumber
d.length
, Anda cukup menulis-n
dan itu akan dihitung dari akhir, hanya sebuah FYI.d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'
90 byte Dan Anda dapat menyimpan satu byte dengan memindahkan"It's "
string. Dan beberapa byte dari shortcut string kecil di sana.d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'
79 bytetoLocaleTimeString("en-US")
86 byte.Bash, 44 karakter
Bash murni, hanya shell builtin, tidak ada alat pelacur.
Contoh dijalankan:
sumber
Powershell, 49 byte
(date).hour/23
tampaknya berfungsi sebagai indeks untuk"ap"
karena membulatkan ke0
jam kurang dari 12 dan1
untuk 12 dan di atas.sumber
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d
melewatkanIt's
di awal. Jika Anda menempelkannya ke depan, itu sama dengan 49 byte"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
date
[datetime]
pemain selalu en-AS . Itu berarti sesuatu seperti ini"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."
adalah mungkin ... yang, diberikan, adalah 54 byte dan lebih lama dari solusi Anda saat ini, tetapi masih merupakan kekhasan bahasa yang menarik.Tergantung lokal
Untuk lingkungan browser yang menyetel lokal ke
en-CA
atau lokal apa pun yang menghasilkan waktu 12 jam secara default:CoffeeScript, 81 byte
JavaScript (ES5), 90 byte
Independen lokal
CoffeeScript,
11396 byteSebelumnya:
Yang ini bekerja di semua lingkungan browser terlepas dari lokal. Membutuhkan Chrome 24+, Firefox 29+, IE 11+, Opera 15+ atau turunan lainnya. Tidak berfungsi di Safari. Lihat
Intl.DateTimeFormat
.sumber
It's 2:59: m.m.
en-US
Swift -
124102 bytesumber
C, 154 byte
Berbeda dengan jawaban C lainnya, jawaban ini menggunakan format "am" / "pm" yang benar. Poster lainnya dihilangkan
#include <time.h>
- jika kompiler Anda mengizinkan ini, kami turun ke 136 byte. Yang mana yang harus kita hitung?sumber
time.h
. Editing.Moonscript - 56 byte
Sayangnya pustaka standar Lua hanya mengimplementasikan% p untuk huruf besar AM / PM, jadi saya harus memanggil metode lebih rendah.
sumber
SpecBAS - 64 byte
Built-in
p$
dari fungsi waktu mengembalikan AM atau PM, jadi ini kemudian harus diformat denganREPLACE$
untuk mengubahnya sehingga harus berhenti penuh sebelum / setelah surat itu.Maka output waktu harus dikonversi ke huruf kecil.
sumber
MATLAB, 66 byte
Menampilkan:
sumber
Python 2,
756766 byteversi lama, 75 byte
versi lama, 75 byte
sumber
Python 3,
1178779 byteIni mendapatkan jam dan menit dari jam 12 jam menggunakan format
%I:%M
, plusam
ataupm
menggunakan%P
. Kami kemudian memilih semuanya kecuali yang terakhirm
dan menambahkan.m.
.Disimpan beberapa byte berkat Ruth Franklin!
sumber
datetime
satu kali, ini lebih pendek 6 byte untuk digunakanfrom datetime import*; h=datetime.now() ...