เวลาอะไรบ้าง


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.?
Stewie Griffin

3
เป็น 02:32 หรือ 2:32 ถ้าน้อยกว่า 10:00
Stewie Griffin

คำตอบ:


18

Bash, 39 33 ไบต์

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

สูญเสียพวงของตัวอักษรเพราะสเป็คต้องa.m.หรือp.m.ในขณะที่dateผลหรือam pmขอบคุณ @DigitalTrauma สำหรับการบันทึก 6 ไบต์!

สิ่งนี้อาจไม่สะดวกในการพกพา มันทำงานบน Ubuntu 15.04

วิธีการแก้ปัญหาที่ใช้วิธีการเดียวกันใน Ruby ซึ่งน่าประหลาดใจที่มีความยาวเท่ากัน:

Ruby, 39 ไบต์

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

%Pให้ฉันเป็นตัวพิมพ์ใหญ่ AM หรือ PM ฉันใช้ mac ถ้ามันสร้างความแตกต่าง
flodel

@flodel ใช้งานได้บน My Machine ™ บน Ubuntu 15.04 %Pให้ตัวพิมพ์เล็กและ%pให้ตัวพิมพ์ใหญ่ (ซึ่งเป็นบิต ... ใช้ง่าย)
ลูกบิดประตู

GNU date(บน Linux และ al.) และ * BSD date(โดยที่ OSX เป็นหนึ่งตัวแปร BSD) มีตัวเลือกและพฤติกรรมที่แตกต่างกันอย่างมากเมื่อคุณออกไปข้างนอกฟีเจอร์ที่ POSIX กำหนด ดังนั้นบางทีคำตอบนี้ควรพูดถึง Bash บน Linux เป็นพิเศษ (นั่นจะsedเกินไปเช่นกัน แต่การเรียกใช้นี้โดยเฉพาะนั้นอยู่ในชุดคุณลักษณะที่ปลอดภัยและพกพาได้)
tripleee

บนเครื่องของฉัน (zsh หรือ bash บน Linux) มันพิมพ์ว่า "It's 04:17" เมื่อเวลานั้นคือ 16:17 ไม่ใช่ "am" หรือ "pm"
aditsu

echo -e "It's $(date +%I:%M%P)\b.m."- แทนที่จะsedใช้ backspace ดูไม่เหมือนคำตอบสำหรับฉัน นอกจากนี้ฉันไม่มี am / pm แต่ฉันคิดว่ามันเป็นเพราะสถานที่
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ที่ส่วนท้ายของamหรือpmเพื่อให้สามารถเพิ่มจุด วันที่มาเป็น00:00amและมันจะกลายเป็นtrim00:00a


คำตอบเก่า (PHP 5.4+ เท่านั้น):

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

สิ่งนี้ทำงานได้เนื่องจากคุณสามารถยกเลิกการอ้างอิงค่าที่ส่งคืนจากฟังก์ชัน ไม่สามารถทำได้ใน PHP5.3 หรือเก่ากว่า


อ่าฉลาด! คุณเอาชนะคำตอบ php ของฉัน
DankMemes

@DankMemes มันใช้เวลาพอสมควร และการทดลองมากมาย
Ismael Miguel

คุณใช้สตริงตัวอักษรโดยไม่มีเครื่องหมายคำพูด ตกลงไหมที่จะใช้สิ่งที่ไม่มี@ผู้ควบคุมและคิดว่าผู้คนจะใช้มันด้วยerror_reporting(0)?
DankMemes

@DankMemes คุณสามารถสันนิษฐานว่าการรายงานข้อผิดพลาดทางอ้อมถูกปิดใช้งาน นี่คือการอ่านที่ดี: meta.codegolf.stackexchange.com/a/1655/14732
Ismael Miguel

5

Visual Basic 6 / VBA 42 41 ไบต์

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

การใช้MsgBoxงานเนื่องจาก VB6 ไม่มีคอนโซล (เว้นแต่คุณจะสกัดกั้นการเชื่อมโยงลิงก์เป็นคอนโซลที่ใช้งานได้ใช้ Windows API แฮ็กบางตัวและทำสิ่งหลบๆ อื่น ๆ)


3
ทำไมคุณไม่แทนที่mด้วย.m.? ie Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
CompuChip

Nice @toothbrush ฉันเรียงลำดับของสิ่งนี้คาดว่าจะเป็นทางออกหนึ่งไบต์ใน CJam;)
CompuChip

4

R, 68 , 59 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

Julia, 74 54 43 ไบต์

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

คุณสามารถลองออนไลน์ได้ !

time()ฟังก์ชันส่งกลับเวลาปัจจุบัน เมื่อส่งผ่านไปstrftimeยังรูปแบบ%I:%M%Pนี้ผลลัพธ์จะเกิดขึ้นHH:MMam/pmโดยที่เวลาจะเป็นนาฬิกาแบบ 12 ชั่วโมง เราสำรองอักขระหนึ่งตัวไว้ด้วย\bเพื่อลบmทิ้งทิ้งไว้aหรือตามpด้วย.m.ปลายแท้ง

บันทึกแล้ว31 ไบต์ขอบคุณ Glen O!


ฉันขอแนะนำสิ่งนี้ได้ไหม print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")- ใช้%Pเพื่อเพิ่มตัวพิมพ์เล็ก am / pm เพื่อหลีกเลี่ยงการเปรียบเทียบและคำสั่ง split
เกลน O

ไม่มีปัญหาเกี่ยวกับความช่วยเหลือ และอย่าพูดกับตัวเอง - คุณทำได้ดี ฉันเพิ่งได้รับความเพลิดเพลินจากการพยายามบีบทุกไบต์สุดท้ายของรหัส ในกรณีนี้ฉันเพิ่งคิดว่าการพยายามข้ามคำสั่ง split และคำสั่งแบบมีเงื่อนไขจะเป็นประโยชน์และจากนั้นไปดูฟังก์ชั่นที่คุณใช้ ฉันอาจจะไม่ได้พบตัวเอง strftime (ฉันได้พยายามที่จะดึงเวลาโดยตรงจากtime())
เกลน O

1
@GlenO หากคุณได้รับความเพลิดเพลินจากการบีบทุกรหัสไบต์สุดท้าย PPCG เป็นสถานที่ที่เหมาะสมสำหรับคุณอย่างแน่นอน!
Alex 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"

ฉันพบสิ่งที่น่าขบขันมากกว่าmainนั้นอีกห้าไบต์ที่ยาวนานกว่า:

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

หรือ 66 ไบต์บน Unix:

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 ไบต์ต้องขอบคุณ @Jakube!


@ Sp3000 ล่ามออนไลน์หรือในพื้นที่?
kirbyfan64sos

@ Sp3000 ฉันคิดว่าฉันรู้ปัญหา มันให้เวลาของตำแหน่งของเซิร์ฟเวอร์ Pyth และฉันไม่จัดการเที่ยงคืนอย่างถูกต้อง รอ ...
kirbyfan64sos

@ Sp3000 คงที่ !!!
kirbyfan64sos

คุณเกือบชนะคำตอบ PHP ของฉันและคำตอบ Bash ของ Doorknob!
Ismael Miguel

3

MATLAB, 59 ไบต์

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

มันคือ 5:38 น.

หากได้รับอนุญาตให้มีช่องว่างระหว่างเวลาและ am / pm แสดงว่าอาจต่ำ52 ไบต์ :

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

เวลา 17:39 น


ฉันคิดว่าผลลัพธ์จะต้องเป็น05:38p.m.
Ismael Miguel

ตามความเห็นของ OP ศูนย์นำไม่สำคัญ
slvrbld

คุณถูก. ที่นี่มี upvote ของฉัน!
Ismael Miguel

ดี! ไม่ทราบว่าฉันสามารถใช้\bเช่นนั้น ... คุณต้องการพื้นที่พิเศษ btw
Stewie Griffin

3

Perl 5.10+, 58 62 ไบต์

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

จะต้องทำงานกับสถานะบรรทัดคำสั่งที่จะได้รับ-M5.010say

ฉันไม่ได้พิจารณาคดีขอบสองสามอย่างในโซลูชันดั้งเดิมของฉัน (กล่าวคือ00:**และ12:**); คงที่ในราคา 4 ไบต์เพิ่มเติม

มันทำงานอย่างไร

ในบริบทสเกลาร์localtimeส่งคืนสตริงดังนี้:

Sat Sep 12 03:13:22 2015

ฟิลด์นาทีมีค่าเป็นศูนย์แล้วซึ่งจะช่วยประหยัดบางไบต์ (ในบริบทของรายการlocaltimeส่งคืนตัวเลขแทนสตริงดังนั้นคุณต้องใส่ข้อมูลด้วยตนเอง)

นี่มัน ungolfed:

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.010say

โซลูชันนี้ขึ้นอยู่กับตำแหน่งที่ตั้งของคุณดังนั้นจะไม่สามารถใช้ได้กับทุกระบบ นอกจากนี้ยังใช้โมดูล POSIX ซึ่งอาจยืดนิยามของ "built-in" แม้ว่ามันจะเป็นโมดูลหลัก

Perl 5.14+ เป็นสิ่งจำเป็นสำหรับโมดิฟายเออร์แบบไม่ทำลายrต่อผู้ประกอบการทดแทน โซลูชันที่เทียบเท่าที่ใช้กับ 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;วาง parens ในการโทรของคุณstrftimeและแทนที่printด้วยsay( -M5.010ฟรี ) ซึ่งจะทำให้ทางออกสุดท้ายของคุณลดลงถึง 54 ไบต์!
ThisSuitIsBlackNot

ขอบคุณ ฉันใช้คำแนะนำของคุณเพื่อแก้ปัญหา POSIX ที่สั้นที่สุด
LukStorms

1
คุณยังมีการนับ-MPOSIX(6 ไบต์) แต่คุณสามารถบันทึก 2 $_=strftime"It's %I:%M%P",localtime;ไบต์โดยวางวงเล็บ: ซึ่งให้ผลรวม 54 ไบต์ซึ่งยังดีกว่าโซลูชัน POSIX 57- ไบต์ของฉัน ทำได้ดี!
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 ไบต์

-6 ไบต์ขอบคุณ user202729

วิธีการแก้ปัญหานั้นตรงไปตรงมา แต่ใน Wordematica เล็กน้อย

(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(~˜Å–ž));

ฉันใช้จำนวนมากของไบต์ที่น่ารังเกียจเพื่อบันทึกความยาวเล็กน้อยดังนั้นนี่คือ hex:

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

Ungolfed

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 ไบต์) หรือเพียงเพิ่มของฉันเอง ...


คุณควรเสมอเพิ่มของคุณเอง คุณเพียงแค่แสดงความคิดเห็นต่อคำตอบของใครบางคนหากคุณเห็นสิ่งที่สามารถช่วยพวกเขาไม่กี่ไบต์ แต่นอกจากนั้นคำตอบที่ดี!
Ismael Miguel

โดยวิธีการที่คุณสามารถเขียน[m=>'.m.']ซึ่งจะช่วยประหยัด 2 ไบต์ (คำเตือนสามารถถูกเพิกเฉยได้ดังนั้นอย่ากังวลไปเลย)
Ismael Miguel

2

SQL (PostgreSQL), 42 41 ไบต์

ตัวแปร SQL อื่นอย่างไรก็ตามตัวแปรนี้อยู่ในแบบสอบถาม

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

ในฐานะที่เป็นโน้ตทั้ง pm หรือ am ทำงานเพื่อรับส่วน am / pm ตัวเลือกการจัดรูปแบบใน PostgreSQL นั้นค่อนข้างยืดหยุ่น ขอบคุณ @manatwork สำหรับเคล็ดลับในการย้ายit'sลงในสตริงรูปแบบ

SQLFiddle


ดังนั้นคุณต้องปรับ am / pm ด้วยตนเองหรือไม่
David Arenburg

@ DavidArenburg ไม่ว่าจะถูกต้องกับทั้ง ... แต่ฉันต้องตรวจสอบเพราะมันดูไม่ถูกต้อง หากคุณเพิ่ม+ time '12:00'หลังจากnow()ใน SQLFiddle มันควรเปลี่ยน am / pm
MickyT

สั้นกว่า 1 ตัวอักษร:select to_char(now(),'"It''s" HH:MIa.m.')
จัดการ

@ การทำงานขอบคุณมาก ฉันจะไม่ลองคิดดู
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
Zach Gates

2

Javascript, 103 ไบต์

จาวาสคริปต์ดำเนินการจากคอนโซล

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 "สตริง และไม่กี่ไบต์จากทางลัดสตริงเล็ก ๆ ในนั้น d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'79 ไบต์
Jan

และถ้าคำตอบนั้นต้องเป็นแบบไม่ขึ้นกับสถานที่ (ตามที่บางคนโพสต์ไว้) ให้ใช้toLocaleTimeString("en-US")86 ไบต์
Jan


2

Powershell, 49 ไบต์

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

(date).hour/23ดูเหมือนว่าจะทำงานเป็นดัชนี"ap"เพราะรอบเป็น0ชั่วโมงน้อยกว่า 12 และ112 ขึ้นไป


ควรจะสามารถเล่นกอล์ฟตัวละครไม่กี่ตัวโดยใช้ "p" / "a" แทนเมื่อสตริงกลายเป็น char-array โดยนัย - 51 bytes -"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 ที่จุดเริ่มต้น หากคุณยึดติดกับด้านหน้ามันก็เหมือนกับ 49 ไบต์เหมือนกัน"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
AdmBorkBork

ความผิดฉันเอง. ฉันแก้ไขมันแล้ว อย่างไรก็ตามรุ่นนี้มีความ "ถูกต้อง" มากกว่าเนื่องจากมีการโทรถึงครั้งเดียวเท่านั้นdate
Danko Durbić

สำหรับสิ่งที่คุ้มค่าฉันได้เจอสิ่งต่อไปนี้ขณะค้นคว้าอย่างอื่น เห็นได้ชัดว่า[datetime]มันได้ปลดเปลื้องอยู่เสมอ en-US นั่นหมายความว่าสิ่งนี้"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."เป็นไปได้ ... ซึ่งได้รับคือ 54 ไบต์และยาวกว่าโซลูชันปัจจุบันของคุณ แต่ก็ยังเป็นภาษาที่น่าสนใจ
AdmBorkBork

@ TimmyD น่าสนใจ แต่ดูเหมือนว่าจะส่งไปยัง DateTimeเท่านั้นที่เป็นแบบสหรัฐอเมริกาไม่ใช่การจัดรูปแบบ
Danko Durbić

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

คำตอบจาวาสคริปต์ให้ฉัน:It's 2:59: m.m.
Mwr247

@ Mwr247 สถานที่ใดบ้างที่เบราว์เซอร์ของคุณอยู่
rink.attendant.6

@ rinkattendant6 สถานที่ของฉันคือen-US
Mwr247


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 ใช้เพียง% p สำหรับตัวพิมพ์ใหญ่ AM / PM ดังนั้นฉันจึงต้องเรียกวิธีที่ต่ำกว่านี้


1

SpecBAS - 64 ไบต์

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

ในตัวp$ของเวลาที่ส่งกลับฟังก์ชัน 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.stftimeอย่างน้อยใน windows ให้ "ValueError: สตริงรูปแบบไม่ถูกต้อง"
สูงสุด

@AlexA Python 2.7.10 (ค่าเริ่มต้น 23 พฤษภาคม 2558 เวลา 09:40:32) [MSC v.1500 32 บิต (Intel)] บน win32 ประเภท "ช่วย", "ลิขสิทธิ์", "เครดิต" หรือ "ใบอนุญาต" เพื่อเพิ่มเติม ข้อมูล. >>> เวลานำเข้าพิมพ์ "มัน% เอสเอ็ม" % time.strftime ( "% I: M% p%") [6] .lower () มันเป็น 01:30 p.m.`
แม็กซ์

1

Python 3, 117 87 79 ไบต์

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

นี้ได้รับชั่วโมงและนาทีจากนาฬิกาแบบ 12 ชั่วโมงโดยใช้รูปแบบ%I:%Mบวกamหรือใช้pm %Pจากนั้นเราจะเลือกทุกอย่าง แต่สุดท้ายและผนวกm.m.

บันทึกไม่กี่ไบต์ต้องขอบคุณรู ธ แฟรงคลิน!


1
เมื่อคุณใช้เพียงdatetimeครั้งเดียวมันสั้นกว่าที่จะใช้ 6 ไบต์from datetime import*; h=datetime.now() ...
Ruth Franklin

@RuthFranklin ขอบคุณสำหรับคำแนะนำ! ฉันยังพบวิธีอื่นที่จะย่อให้สั้นลง
Alex A.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.