何時ですか、チャップ?


18

正直、これはまだCode Golfの質問ではないとは信じられませんが、....

現地時間(amまたはpm)をコンソールに文字列として出力します。先頭に「It's」が付きます。

例:

Run code....

出力:

It's 12:32p.m.

最短のコードが優先されます。

コードアウェイ!

リーダーボード


1
出力形式は何ですか?それは重要ですか?
mbomb007

1
いいえ、yyyy-MM-dd hh:mm:ss UTC日付形式は重要ですか、それとも重要ではありませんか?
mbomb007

8
私は本当に印刷する答えを出したかったのですがIt's beer o'clock、抵抗しました。
MickyT

4
12:32 PMまたはを使用できますか12:32PM?代わりに12:32p.m.
スティーヴィーグリフィン

3
10:00未満の場合、02:32または2:32ですか?
スティーヴィーグリフィン

回答:


18

Bash、39 33バイト

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

スペックが必要なので、文字の束を無駄にしa.m.たりp.m.しながらdate出力amまたはpm。6バイトを節約してくれた@DigitalTraumaに感謝します!

これはあまり移植性がないかもしれません。Ubuntu 15.04で動作します。

Ruby 本質的に同じメソッドを使用するソリューションで、驚くほど正確に同じ長さです:

ルビー、39バイト

$><<`date "+It's %I:%M%P"`[0..-3]+'.m.'

%PAMまたはPMを大文字にします。それが違いを生むなら、私はマック上にいます。
flodel

@flodelはMy Machine™で動作します。Ubuntu 15.04では、%P小文字を使用し、%p大文字を使用します(少し...直感的ではありません)。
ドアノブ

GNU date(Linuxなど)と* BSD date(OSXはBSDバリアントの1つ)には、POSIXで指定された機能セットの外に出たときのオプションと動作が大きく異なります。したがって、おそらくこの答えは、LinuxでのBashについて具体的に言及しているはずです。(これsedも同様です。ただし、この特定の呼び出しは安全でポータブルな機能セット内にしっかりと含まれています。)
tripleee

私のマシン(Linuxではzshまたはbash)では、「04:17です」と出力されます。時間が16:17の場合。いいえ「午前」または「午後」
-aditsu

echo -e "It's $(date +%I:%M%P)\b.m."- sedバックスペースを使用する代わりに。私には別の答えのようには見えません。また、午前/午後はありませんが、ロケールのせいだと思います。
-aragaer

13

AppleScript、198

なぜならAppleScript。なぜそうではないから:

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

痛かった。


18
AppleScriptは新しいJavaです。
ドアノブ

8

PHP、35 33バイト

仕事に間違ったツールを使用しています!

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

またはmの末尾のを単に削除して、ドットを追加できるようにします。日付はとして来て、それでなります。ampm00:00amtrim00:00a


古い回答(PHP 5.4+のみ):

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

これは、関数から返された値を逆参照できるため機能します。これは、PHP5.3以前では不可能です。


ああ、賢い!あなたは私のphpの答え
-DankMemes

@DankMemesかなり時間がかかりました。そして、多くの実験。
イスマエルミゲル

引用符なしで文字列リテラルを使用しました。@演算子なしでそれらを使用し、人々がそれを実行すると仮定しても大丈夫error_reporting(0)ですか?
DankMemes

@DankMemesエラー報告が無効になっていると間接的に想定できます。良い読み物は次のとおり
イスマエル・ミゲル

5

Visual Basic 6 / VBA、 42 41バイト

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

使用MsgBoxVB6は(コンソール実行ファイルとしてリンク、リンクを傍受していない限り、一部のWindows APIのハックを使用して、他のいくつかのやるコンソールを持っていないとして、危険なものを)。


3
に置き換えmてみません.m.か?すなわち Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
-CompuChip

素敵な@toothbrush、私はこれがCJamの1バイトのソリューションであると予想しました;)
CompuChip

4

R、6859 62 60 55

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

(コメント@ Alex.Aに感謝します。そして@flodel)は、現在のシステム時刻(とりSys.time())、それは正しく使用してフォーマット%I:%M%P組み合わせは、末尾にドットを追加し、そして置き換えるm.m.


4

ジュリア、74 54 43バイト

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

オンラインで試すことができます

time()関数は、現在の時刻を返します。strftimeformat %I:%M%Pで渡されると、結果はHH:MMam/pmになります。ここで、時間は12時間制です。を\b削除しmて末尾のaまたはを残して1文字をバックアップし、最後にpタック.m.します。

グレンOのおかげで31バイト節約されました!


これを提案できますか?print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")- %P比較とsplitコマンドを回避するために、小文字のam / pmを追加するために使用します。
グレンO

ヘルプに関する問題はありません。そして、自分自身を語らないでください-あなたは大丈夫です。コードの最後の1バイトをすべて圧縮しようとするのは楽しいことです。この場合、分割コマンドと条件ステートメントをバイパスすることは有益であると考え、使用した関数を調べました。私はおそらく自分でstrftimeを見つけられなかっただろう(私はから直接時間を抽出しようとしただろうtime()
グレンO

1
@GlenOコードの最後の1バイトを絞り出すことを楽しんでいるなら、PPCGは間違いなくあなたにぴったりの場所です!
アレックスA.

ちなみに、私はさらにいくつかのバイトを絞り出す方法を見つけました:print(strftime("It's %I:%M%P",time())[1:11],".m.")
グレンO

実際には、さらに良い:print(strftime("It's %I:%M%P\b.m.",time()))
グレンO

3

Haskell、135バイト

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

main5バイト長い、もっと面白いことがわかりました。

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

またはUnixで66バイト:

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

3

Pyth、38 36バイト

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

@ジャクベのおかげで2バイト節約されました!


@ Sp3000オンライン通訳ですか、それともローカルですか?
kirbyfan64sos

@ Sp3000私は問題を知っていると思います。それはPythサーバーの場所の時間を与えているので、真夜中を正しく処理していません。...ちょっと待って
kirbyfan64sos

@ Sp3000修正済み!!!
kirbyfan64sos

あなたは私のPHPの答えとDoorknobのBashの答えをほとんど打ち負かしています!
イスマエルミゲル

3

MATLAB、59バイト

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

午後5時38分です。

timeとam / pmの間に空白を入れることが許可されている場合、52バイトまで低くなる可能性があります

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

午後5時39分


私は、出力があることが必要だと思う05:38p.m.
イスマエルミゲル

OPのコメントによれば、先行ゼロは問題ではありません。
slvrbld

あなたが正しい。ここで、私の賛成票をください!
イスマエルミゲル

いいね!私は\bそのように使用できることを知りませんでした...あなたは余分なスペースが必要です。
スティーヴィーグリフィン

3

Perl 5.10以降、58 62バイト

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

-M5.010を取得するには、コマンドラインフラグを指定して実行する必要がありますsay

私は元のソリューションでいくつかのエッジケースを説明しませんでした(つまり、00:**および12:**)。4バイトの追加コストで修正されました。

使い方

スカラーコンテキストでlocaltimeは、次のような文字列を返します。

Sat Sep 12 03:13:22 2015

分フィールドには既にゼロが埋め込まれているため、いくつかのバイトが節約されます(リストコンテキストでは、 localtimeは、文字列ではなく数字が返されるため、自分で埋める必要があります)。

ここでは、無料です:

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バイト

(ルールを少し引き伸ばすので、楽しみのためだけに。)

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

51バイト+ 6バイト-MPOSIX-M5.010取得するには、コマンドラインフラグを指定して実行する必要がありますsay

このソリューションはロケールに依存するため、すべてのシステムで機能するわけではありません。また、POSIXモジュールを使用します。これは、コアモジュールであるにもかかわらず、「組み込み」の定義を拡張している可能性があります。

r置換演算子の非破壊修飾子にはPerl 5.14以降が必要です。5.10以降で動作する同等のソリューションは次のとおりです。

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

これも57バイトです(51バイト+の6バイト-MPOSIX)。


3

Perl 5、74バイト

変数が右から左に評価される方法の小さなショーケース。

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

POSIXを使用:80バイト

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

時間ロケール依存とスイッチでPOSIXを使用する場合:54バイト(48 + 6)

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

テスト

$ export LC_TIME="en_DK.UTF-8"
$ perl -MPOSIX -M5.01 whatsthetimechap.pl
It's 3:09p.m.

1
あなたは使用して、POSIXソリューションのいくつかのバイトを保存することができます-MPOSIXのではなくuse POSIX;、あなたの呼び出しで括弧を落としstrftime、および交換printsay-M5.010無料です)。これにより、最後のソリューションが54バイトになります。
ThisSuitIsBlackNot

ありがとう。最短のPOSIXソリューションに対するアドバイスを使用しました。
LukStorms

1
まだカウントする必要があります-MPOSIX(6バイト)が、括弧を削除することで2バイト節約できます$_=strftime"It's %I:%M%P",localtime;。これにより、合計54バイトが得られますが、これは57バイトのPOSIXソリューションよりも優れています。よくやった!
ThisSuitIsBlackNot

ねえ、数バイトを救ってくれてありがとう。
LukStorms

3

CJam、40バイト

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

CJamインタープリターでオンラインで試してください。

使い方

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

3

Mathematica 49 90 92 90 84バイト

user202729のおかげで-6バイト

Mathematicaでの解決策は簡単ですが、少し冗長です。

(d=DateString)@{"It's ","Hour12",":","Minute"}<>(d@"AMPM"/."AM"->"a.m."/."PM"->"p.m‌ .")

(この投稿はかなり古いものですが)StringReplace削除することができますが、6バイト節約してください。(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
user202729

2

T-SQL(2012 +)、67 65バイト

SQL Server 2012は、最終的に日付の適切な書式設定機能を提供しました。それでも、フォーマットを正しくするためにAM / PMをいじる必要がありました。

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

以前のバージョンでは、このようなものが必要でした(93バイト)

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

2

PHP、49バイト

それだけではam/pmなくa.m./p.m....

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

少し長さを節約するために多くの厄介なバイトを使用したため、ここに16進数があります。

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;

読み取り可能なバージョン:

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

2

C、103 94バイト

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

非ゴルフ

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

2

PHP、41バイト

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

初めてこれをプレイしました。以前のPHPの回答(49バイト)を更新/編集するのか、それとも自分で追加するのかわからない...


常に自分で追加する必要があります。数バイト節約できるものを見つけた場合にのみ、誰かの回答にコメントします。しかし、それ以外はいい答えです!
イスマエルミゲル

ところで、を書く[m=>'.m.']と2バイト節約できます。(警告は無視できるので、心配する必要はありません。)
イスマエルミゲル

2

SQL(PostgreSQL)、42 41バイト

別のSQLバリアント。ただし、これはクエリ内にあります。

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

注記として、pmまたはamはam / pm部分を取得するために機能します。PostgreSQLのフォーマットオプションは非常に柔軟です。it's書式文字列に移動するヒントの@manatworkに感謝します。

SQLFiddle


午前/午後に手動で調整する必要がありますか?
デビッドアレンバーグ

@DavidArenburg、いや、それはどちらかでうまくいきます...しかし、それは正しく見えなかったので、私はそれをチェックアウトしなければなりませんでした。SQLFiddleの+ time '12:00'後に追加now()すると、am / pmが変更されます。
MickyT

1文字短縮:select to_char(now(),'"It''s" HH:MIa.m.')
マナトワーク

@manatwork、ありがとうございました。私はそれを試みることを考えていなかっただろう。
MickyT

2

CJam、43バイト

数字をゼロで埋めなければならないので、これは私が望むより大きくなります。結局、文字列の書式設定が最も簡単な方法でした。

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

オンラインでお試しください

説明

   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

1
これは両方の12で失敗します。代わりに12:37出力します00:37
ザックゲイツ

2

Javascript、103バイト

コンソールから実行されるJavascript。

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

C#、63バイト

イミディエイトウィンドウから実行されるC#。

?"It's "+System.DateTime.Now.ToString("h:MMt").ToLower()+".m.";

F#としても実行されます;)
Stachu

あなたが計算する必要はありませんd.length、あなたは書くことができ-n、それは最後から計算します、ちょうどFYIです。d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'90バイト。また、"It's "文字列を移動することで1バイトを節約できます。そこに小さな文字列のショートカットから数バイト。d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'79バイト。
2015

また、回答がロケールに依存しない必要がある場合(一部が投稿しているように)、toLocaleTimeString("en-US")86バイトを使用します。
1

2

Bash、44文字

Pure Bash、シェルビルトインのみ、*** utilsはなし。

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

サンプル実行:

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

2

Powershell、49バイト

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

(date).hour/2312時間未満および12時間以上に"ap"丸められるため、インデックスとして機能するようです。01


代わりに「p」/「a」を文字列が暗黙のchar-array-51バイトに変換されるように処理することで、数文字をゴルフできるようにする必要があります"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
-AdmBorkBork

あなたの最新は最初に"{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$d見逃していIt's ます。これを前面に"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
追加すると、AdmBorkBork

私の悪い。私はそれを修正しました。それだけに、単一の呼び出しを行うようとにかく、このバージョンは、より多くの「正しい」であるdate
ダンコDurbić

それが価値があるものについて、私は他の何かを研究している間に以下に出くわしました。どうやら[datetime]キャストは常にen-USですです。つまり、このようなこと"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."が可能になるということです...これは54バイトであり、現在のソリューションよりも長くなっていますが、それでも言語の興味深い癖です。
AdmBorkBork

@TimmyDおもしろいですが、フォーマットではなくen-USであるDateTimeにキャストしているようです。
ダンコドゥルビッチ

2

ロケール依存

ロケールがに設定されているブラウザー環境の場合 en-CAまたはデフォルトで12時間を出力するロケールの場合:

CoffeeScript、81バイト

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

JavaScript(ES5)、90バイト

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

ロケールに依存しない

CoffeeScript、113 96バイト

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

前:

これは、ロケールに関係なく、すべてのブラウザー環境で機能します。Chrome 24以降、Firefox 29以降、IE 11以降、Opera 15以降、またはこれらの派生物が必要です。Safariでは機能しません。をご覧くださいIntl.DateTimeFormat

alert "It's #{new Intl.DateTimeFormat('en',{hour:f='2-digit',minute:f}).format(new Date).toLowerCase()[..-2]}.m."

javascriptの答えは私に与えた:It's 2:59: m.m.
Mwr247

@ Mwr247あなたのブラウザはどのロケールにありますか?
rink.attendant.6

@ rinkattendant6私のロケールはen-US
Mwr247

2

Swift- 124102バイト

import Cocoa
var f=NSDateFormatter()
f.dateFormat="hh:mma"
print("It's \(f.stringFromDate(NSDate()))")

2

C、154バイト

#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');}

他のCの答えとは対照的に、これは正しい「am」/「pm」形式を使用します。他のポスターは省略されてい#include <time.h>ます。コンパイラがこれを許可している場合、136バイトになります。どちらを数えるべきでしょうか?


あなたは正しい、実際に私が得たのは警告だけだったtime.h。編集。
mindriot

1

Moonscript-56バイト

print "It's "..(os.date'%I:%M%p'\gsub 'M','.M.')\lower!

残念ながら、Lua標準ライブラリは大文字のAM / PMに対してのみ%pを実装しているため、このメソッドをlowerで呼び出す必要があります。


1

SpecBAS-64バイト

PRINT "It's ";LOW$(REPLACE$(TIME$(TIME,"h:mm p$"),"M",".M."))

p$time関数の組み込みはAMまたはPMを返すため、これは次のようにフォーマットする必要があります。REPLACE$文字を変更するには、その文字の前後に完全に停止必要があります。

次に、時間出力を小文字に変換する必要がありました。



1

Python 2、75 67 66バイト

import time;print"It's %s.m."%time.strftime("%I:%M%p")[:6].lower()

古いバージョン、75バイト

import time
t=time.strftime("%I:%M%p")
print"It's",t[:5]+t[5].lower()+".m."

古いバージョン、75バイト

import time
print"It's",time.strftime("%I:%M%p").lower().replace("m",".m.")

@AlexA。Pythonの2で動作していないtime.strftime窓の下で、少なくともする「とValueErrorを:無効なフォーマット文字列」を与える
マックス

@AlexA Python 2.7.10(デフォルト、2015年5月23日、09:40:32)[MSC v.1500 32ビット(Intel)] on win32タイプ「help」、「copyright」、「credits」、または「license」情報。>>>インポート時間; print "It's%sm"%time.strftime( "%I:%M%p")[:6] .lower()It's 01:30 p.m.`
Max

1

Python 3、117 87 79バイト

from datetime import*
print(datetime.now().strftime("It's %I:%M%P")[:-1]+".m.")

これは、形式%I:%Mplus amまたはpmを使用して、12時間制から時間と分を取得し%Pます。次に、最後以外mをすべて選択して追加します.m.

ルース・フランクリンのおかげで数バイト節約できました!


1
datetime一度しか使用しないので、使用するのに6バイト短くなりますfrom datetime import*; h=datetime.now() ...
ルースフランクリン

@RuthFranklin提案をありがとう!それを短くする他の方法もいくつか見つけました。
アレックスA.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.