Mấy giờ rồi, chap?


18

Tôi thực sự không thể tin rằng đây chưa phải là một câu hỏi trên Code Golf, nhưng ....

In giờ địa phương (với sáng hoặc chiều) dưới dạng chuỗi lên bàn điều khiển, trước "Nó".

Thí dụ:

Run code....

Đầu ra:

It's 12:32p.m.

Mã ngắn nhất sẽ thắng.

Mã đi!

Bảng xếp hạng


1
Định dạng đầu ra là gì? Có vấn đề gì không?
mbomb007

1
Không, ý tôi là, nó nên yyyy-MM-dd hh:mm:ss UTChay định dạng ngày đó không quan trọng?
mbomb007

8
Tôi thực sự muốn đưa ra một câu trả lời mà in It's beer o'clock, nhưng tôi đã từ chối.
MickyT

4
Chúng ta có thể sử dụng 12:32 PMhay 12:32PMkhông? Thay vì 12:32p.m.?
Stewie Griffin

3
Là 02:32 hay 2:32 nếu nó dưới 10:00?
Stewie Griffin

Câu trả lời:


18

Bash, 39 33 byte

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

Đã lãng phí một loạt các ký tự vì thông số kỹ thuật yêu cầu a.m.hoặc p.m.trong khi dateđầu ra amhoặc pm. Cảm ơn @DigitalTrauma vì đã lưu 6 byte!

Điều này có thể không phải là rất di động. Nó hoạt động trên Ubuntu 15.04.

Một giải pháp sử dụng cơ bản cùng một phương thức trong Ruby , đáng ngạc nhiên là có cùng độ dài :

Ruby, 39 byte

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

%Pcho tôi viết hoa AM hoặc PM. Tôi đang dùng mac nếu nó tạo ra sự khác biệt.
flodel

@flodel Hoạt động trên máy của tôi ™. Trên Ubuntu 15.04, %Pcho chữ thường và %pviết hoa (hơi ... không trực quan).
Doorknob

GNU date(trên Linux và cộng sự) và * BSD date(trong đó OSX là một biến thể BSD) có các tùy chọn và hành vi cực kỳ khác nhau khi bạn mạo hiểm bên ngoài bộ tính năng được chỉ định bởi POSIX. Vì vậy, có lẽ câu trả lời này nên đề cập cụ thể đến Bash trên Linux. (Điều đó sedcũng đúng; nhưng cách gọi đặc biệt này nằm trong bộ tính năng an toàn và di động.)
tripleee

Trên máy của tôi (zsh hoặc bash trên Linux), nó in "Đó là 04:17." khi thời gian là 16:17. Không "sáng" hay "chiều"
aditsu

echo -e "It's $(date +%I:%M%P)\b.m."- thay vì sedsử dụng backspace. Không giống như một câu trả lời riêng cho tôi. Ngoài ra tôi không có bất kỳ sáng / chiều nào nhưng tôi nghĩ đó là vì địa phương.
aragaer

13

AppleScript, 198

Vì AppleScript. Bởi vì tại sao không:

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

Điều đó thật đau đớn.


18
AppleScript là Java mới.
Doorknob

8

PHP, 35 33 byte

Sử dụng sai công cụ cho công việc!

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

Nó chỉ đơn giản là loại bỏ mở cuối amhoặc pm, để cho phép thêm các dấu chấm. Ngày đến 00:00am, và với trimnó trở thành 00:00a.


Câu trả lời cũ (chỉ có phiên bản 5,4+):

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

Điều này hoạt động vì bạn có thể hủy tham chiếu một giá trị được trả về từ một hàm. Điều này không thể có trong PHP5.3 trở lên.


A, thông minh! Bạn đánh bại câu trả lời php của tôi
DankMeme

@DankMeme Tôi mất khá nhiều thời gian. Và rất nhiều thử nghiệm.
Ismael Miguel

Bạn đã sử dụng một chuỗi ký tự mà không có dấu ngoặc kép. Có thể sử dụng những người không có @nhà điều hành và cho rằng mọi người sẽ chạy nó với error_reporting(0)?
DankMeme

@DankMeme Bạn có thể gián tiếp cho rằng báo cáo lỗi bị vô hiệu hóa. Đây là một bài đọc tốt: meta.codegolf.stackexchange.com/a/1655/14732
Ismael Miguel

5

Visual Basic 6 / VBA, 42 41 byte

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

Sử dụng MsgBox, vì VB6 không có bàn điều khiển (trừ khi bạn chặn liên kết, liên kết dưới dạng bảng điều khiển có thể thực thi được, sử dụng một số hack Windows API và thực hiện một số công cụ tinh ranh khác).


3
Tại sao bạn không chỉ cần thay thế mbằng .m.? tức là Debug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
CompuChip

Nice @tooth Brush, tôi dự đoán đây sẽ là giải pháp một byte trong CJam;)
CompuChip

4

R, 68 , 59 62 60 55

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

(Cảm ơn @ Alex.A. Và @flodel về các bình luận) Lấy thời gian hệ thống hiện tại ( Sys.time()), định dạng chính xác bằng cách sử dụng %I:%M%Pkết hợp, thêm dấu chấm ở cuối và thay thế mbằng .m..


4

Julia, 74 54 43 byte

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

Bạn có thể thử trực tuyến !

Các time()hàm trả về thời gian hiện tại. Khi được chuyển sang strftimeđịnh dạng %I:%M%P, kết quả này sẽ dẫn đến HH:MMam/pm, trong đó số giờ trên mỗi đồng hồ 12 giờ. Chúng tôi sao lưu một ký tự với \bđể loại bỏ m, để lại dấu ahoặc hoặc psau đó giải quyết .m.vào cuối.

Đã lưu 31 byte nhờ Glen O!


Tôi có thể đề nghị điều này? print("It's ",strftime("%r%P",time())[[1:5,12]],".m.")- sử dụng %Pđể thêm chữ thường sáng / chiều, để tránh so sánh và lệnh tách.
Glen O

Không có vấn đề liên quan đến sự giúp đỡ. Và đừng nói xuống - bạn làm tốt. Tôi chỉ nhận được sự thích thú khi cố gắng nén từng byte cuối cùng ra khỏi mã. Trong trường hợp này, tôi chỉ hình dung rằng cố gắng bỏ qua lệnh split và câu lệnh có điều kiện sẽ có ích, và sau đó xem xét các hàm bạn đã sử dụng. Có lẽ tôi đã không tìm thấy bản thân mình (tôi đã cố gắng trích xuất thời gian trực tiếp từ đó time())
Glen O

1
@GlenO Nếu bạn cảm thấy thích thú với việc vắt kiệt từng byte cuối cùng của mã, PPCG chắc chắn là nơi phù hợp với bạn!
Alex A.

Tình cờ, tôi đã tìm được cách vắt thêm vài byte:print(strftime("It's %I:%M%P",time())[1:11],".m.")
Glen O

Trên thực tế, thậm chí còn tốt hơn:print(strftime("It's %I:%M%P\b.m.",time()))
Glen O

3

Haskell, 135 byte

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

Tôi tìm thấy nhiều điều thú vị hơn mainđó là năm byte dài hơn:

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

Hoặc 66 byte trên Unix:

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

3

Pyth, 38 36 byte

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

Đã lưu 2 byte nhờ @Jakube!


@ Sp3000 Trên trình thông dịch trực tuyến hoặc tại địa phương?
kirbyfan64sos

@ Sp3000 Tôi nghĩ tôi biết vấn đề. Nó đang cho thời gian của vị trí máy chủ Pyth và tôi không xử lý đúng nửa đêm. Giữ ...
kirbyfan64sos

@ Sp3000 Đã sửa !!!
kirbyfan64sos

Bạn gần như đánh bại câu trả lời PHP của tôi và câu trả lời Bash của Doorknob!
Ismael Miguel

3

MATLAB, 59 byte

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

Đó là 5:38 chiều.

If it's allowed to have a whitespace between time and a.m./p.m., then it could be as low as 52 bytes:

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

It's 5:39 p.m.


I think the output must be 05:38p.m.
Ismael Miguel

According to OP's comment, the leading zero doesn't matter.
slvrbld

You're right. Here, have my upvote!
Ismael Miguel

Đẹp! Không biết tôi có thể sử dụng \bnhư thế ... Bạn cần thêm một không gian btw.
Stewie Griffin

3

Perl 5.10+, 58 62 byte

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

Phải được chạy với -M5.010cờ dòng lệnh để có được say.

Tôi đã không tính đến một vài trường hợp cạnh trong giải pháp ban đầu của mình (cụ thể là, 00:**12:**); cố định với chi phí 4 byte bổ sung.

Làm thế nào nó hoạt động

Trong ngữ cảnh vô hướng, localtimetrả về một chuỗi như thế này:

Sat Sep 12 03:13:22 2015

Trường phút đã được đệm bằng 0, giúp lưu một số byte (trong ngữ cảnh danh sách, localtimetrả về số thay vì chuỗi, vì vậy bạn phải tự đệm chúng).

Đây là vô căn cứ:

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 byte

(Chỉ để cho vui, vì nó kéo dài các quy tắc một chút.)

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

51 byte + 6 byte cho -MPOSIX. Cũng phải được chạy với -M5.010cờ dòng lệnh để có được say.

Giải pháp này phụ thuộc vào ngôn ngữ của bạn, vì vậy sẽ không hoạt động trên tất cả các hệ thống. Nó cũng sử dụng mô-đun POSIX, có thể kéo dài định nghĩa của "tích hợp", mặc dù nó là mô-đun lõi.

Perl 5.14+ là bắt buộc đối với công cụ rsửa đổi không phá hủy đối với toán tử thay thế. Một giải pháp tương đương hoạt động trên 5.10+ là:

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

Đây cũng là 57 byte (51 byte + 6 byte cho -MPOSIX).


3

Perl 5, 74 byte

Một bản giới thiệu nhỏ về cách các biến được đánh giá từ phải sang trái.

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

Sử dụng POSIX: 80 byte

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

Sử dụng POSIX với sự phụ thuộc và chuyển đổi ngôn ngữ thời gian: 54 byte (48 + 6)

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

Kiểm tra

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

1
Bạn có thể lưu một số byte trên các giải pháp POSIX của mình bằng cách sử dụng -MPOSIXthay vì use POSIX;bỏ các parens trong cuộc gọi của bạn strftimevà thay thế printbằng say( -M5.010miễn phí ). Điều này mang lại giải pháp cuối cùng của bạn xuống còn 54 byte!
ThisSuitIsBlackNot

Cảm ơn. Tôi đã sử dụng lời khuyên của bạn cho giải pháp POSIX ngắn nhất.
LukStorms

1
Bạn vẫn phải đếm -MPOSIX(6 byte), nhưng bạn có thể lưu 2 byte bằng cách bỏ dấu ngoặc : $_=strftime"It's %I:%M%P",localtime;. Điều đó mang lại tổng cộng 54 byte, vẫn tốt hơn giải pháp POSIX 57 byte của tôi. Làm tốt!
ThisSuitIsBlackNot

Heh, cảm ơn một lần nữa vì đã giải cứu một vài byte.
LukStorms

3

CJam, 40 byte

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

Hãy thử trực tuyến trong trình thông dịch CJam .

Làm thế nào nó hoạt động

"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

Toán học 49 90 92 90 84 byte

-6 byte nhờ người dùng202729

Giải pháp rất đơn giản, nhưng hơi dài dòng, trong Mathicala.

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

(Mặc dù bài đăng này khá cũ) StringReplacecó thể được loại bỏ, hãy lưu 6 byte. (d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
dùng202729

2

T-SQL (2012+), 67 65 byte

SQL Server 2012 cuối cùng đã cho chúng ta một chức năng định dạng hợp lý cho ngày. Tôi vẫn phải loay hoay với AM / PM để có được định dạng đúng.

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

Trong các phiên bản trước, nó sẽ cần một cái gì đó như thế này (93 byte)

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

2

PHP, 49 byte

Giá như nó am/pmthay vì a.m./p.m....

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

Tôi đã sử dụng rất nhiều byte khó chịu để tiết kiệm một chút chiều dài, vì vậy đây là 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;

Phiên bản dễ đọc:

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

2

C, 103 94 byte

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

Ung dung

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 byte

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

Lần đầu tiên tôi chơi cái này. Không chắc chắn nếu tôi phải cập nhật / chỉnh sửa câu trả lời PHP trước đó (49 byte) hoặc chỉ thêm ...


Bạn nên luôn luôn thêm của riêng bạn. Bạn chỉ nhận xét về câu trả lời của ai đó nếu bạn thấy điều gì đó có thể lưu cho họ một vài byte. Nhưng khác hơn, câu trả lời tốt đẹp!
Ismael Miguel

Nhân tiện, bạn có thể viết [m=>'.m.'], giúp tiết kiệm 2 byte. (Cảnh báo có thể bị bỏ qua, vì vậy, đừng lo lắng về chúng.)
Ismael Miguel

2

SQL (PostgreSQL), 42 41 byte

Một biến thể SQL khác, tuy nhiên biến thể này nằm trong một truy vấn.

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

Như một lưu ý hoặc chiều hoặc sáng làm việc để có được phần sáng / chiều. Các tùy chọn định dạng trong PostgreSQL thực sự khá linh hoạt. Cảm ơn @manatwork cho mẹo để di chuyểnit's chuỗi định dạng.

SQLFiddle


Vì vậy, bạn cần phải điều chỉnh am / pm nó bằng tay?
David Arenburg

@DavidArenburg, không có gì đúng cả ... nhưng tôi phải kiểm tra xem, vì nó có vẻ không đúng. Nếu bạn thêm + time '12:00'sau now()SQLFiddle, nó sẽ thay đổi sáng / chiều.
MickyT

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

@manatwork, cảm ơn rất nhiều. Tôi sẽ không nghĩ đến việc thử điều đó.
MickyT

2

CJam, 43 byte

Phải đệm các số bằng số 0 làm cho số này lớn hơn tôi muốn. Cuối cùng, định dạng chuỗi là cách ngắn nhất.

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

Hãy thử trực tuyến .

Giải trình

   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
Điều này thất bại cho cả 12. Thay vì 12:37nó đầu ra 00:37.
Zach Gates

2

Javascript, 103 byte

Javascript được thực thi từ bàn điều khiển.

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

C #, 63 byte

C # thực hiện từ cửa sổ ngay lập tức.

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

Cũng chạy dưới dạng F #;)
Stachu

Bạn không cần tính toán d.length, bạn chỉ có thể viết -nvà nó sẽ tính từ cuối, chỉ là một FYI. d="It's "+new Date().toLocaleTimeString();d.slice(0,-6)+d.slice(-2,-1).toLowerCase()+'.m.'90 byte. Và bạn có thể lưu một byte bằng cách di chuyển "It's "chuỗi. Và một vài byte từ một phím tắt chuỗi nhỏ trong đó. d=new Date().toLocaleTimeString();"It's "+d.slice(0,5)+d[9].toLowerCase()+'.m.'79 byte.
Ngày

Và nếu câu trả lời cần độc lập với miền địa phương (như một số đã đăng), chỉ cần sử dụng toLocaleTimeString("en-US")86 byte.
Ngày

2

Bash, 44 ký tự

Bash thuần túy, chỉ là vỏ dựng, không có đồ dùng.

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

Chạy mẫu:

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

2

Powershell, 49 byte

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

(date).hour/23dường như hoạt động như một chỉ số "ap"vì nó làm tròn đến 0hàng giờ dưới 12 và 1từ 12 trở lên.


Nên có thể loại bỏ một vài ký tự bằng cách thay vào đó xử lý "p" / "a" khi chuỗi biến thành một mảng char ẩn - 51 byte -"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
admBorkBork

Mới nhất của bạn "{0:hh:mm}$("ap"[($d=date).hour/23]).m."-f$dbỏ lỡ It's ở đầu. Nếu bạn giải quyết vấn đề đó ở phía trước, thì đó là 49 byte giống như"It's $((date -f hh:mm)+"ap"[(date).hour/23]).m."
admBorkBork

Lỗi của tôi. Tôi đã sửa nó. Dù sao, phiên bản này là "chính xác" hơn, vì nó chỉ thực hiện một cuộc gọi đếndate
Danko Durbić

Đối với những gì nó có giá trị, tôi tình cờ tìm thấy những điều sau đây trong khi nghiên cứu một cái gì đó khác. Rõ ràng [datetime]dàn diễn viên luônen-US . Điều đó có nghĩa là một cái gì đó như thế này "It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."là có thể ... được, được cấp, là 54 byte và dài hơn giải pháp hiện tại của bạn, nhưng vẫn là một cách giải thích thú vị về ngôn ngữ.
admBorkBork

@TimmyD Thú vị, nhưng có vẻ như nó chỉ truyền tới DateTime là en-US, không định dạng.
Danko Durbić

2

Phụ thuộc địa phương

Đối với môi trường trình duyệt có ngôn ngữ được đặt thành en-CAhoặc bất kỳ ngôn ngữ nào xuất ra thời gian 12 giờ theo mặc định:

CoffeeScript, 81 byte

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

JavaScript (ES5), 90 byte

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

Địa phương độc lập

CoffeeScript, 113 96 byte

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

Trước:

Cái này hoạt động trong tất cả các môi trường trình duyệt bất kể miền địa phương. Yêu cầu Chrome 24+, Firefox 29+, IE 11+, Opera 15+ hoặc bất kỳ dẫn xuất nào như vậy. Không hoạt động trong Safari. Xem Intl.DateTimeFormat.

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

Câu trả lời javascript đã cho tôi:It's 2:59: m.m.
Mwr247

@ Mwr247 Trình duyệt của bạn đang ở địa phương nào?
rink.attguard.6

@ rinkattguard6 Địa điểm của tôi làen-US
Mwr247

2

Swift - 124 102 bytes

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

2

C, 154 bytes

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

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?


Bạn nói đúng, trên thực tế tất cả những gì tôi nhận được là một cảnh báo - tôi đã nhầm lẫn với một lỗi từ việc cố gắng làm mà không có time.h. Chỉnh sửa.
mindriot

1

Moonscript - 56 byte

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

Thật không may, thư viện chuẩn Lua chỉ thực hiện% p cho chữ hoa AM / PM, vì vậy tôi phải gọi phương thức thấp hơn.


1

SpecBAS - 64 byte

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

Hàm tích hợp p$của hàm thời gian trả về AM hoặc PM, do đó, hàm này sau đó phải được định dạng REPLACE$để thay đổi nó để nó dừng hoàn toàn trước / sau chữ cái đó.

Sau đó, thời gian đầu ra phải được chuyển đổi thành chữ thường.


1

MATLAB, 66 bytes

['It''s' lower(datestr(now,'HH:MMam'))];disp([ans(1:end-1),'.m.'])

Displays:

It's 2:48p.m.

1

Python 2, 75 67 66 bytes

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

old version, 75 bytes

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

old version, 75 bytes

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

@AlexA. Not working in Python 2 time.strftime at least under windows gives "ValueError: Invalid format string"
Max

@AlexA Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import time;print"It's %s.m."%time.strftime("%I:%M%p")[:6].lower() It's 01:30p.m.`
Max

1

Python 3, 117 87 79 bytes

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

This gets the hours and minutes from a 12-hour clock using the format %I:%M, plus am or pm using %P. We then select everything but the last m and append .m..

Saved a few bytes thanks to Ruth Franklin!


1
As you're only using datetime once, it's 6 bytes shorter to use from datetime import*; h=datetime.now() ...
Ruth Franklin

@RuthFranklin Thanks for the suggestion! I also found a few other ways to shorten it.
Alex A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.