Вывести текущее время

49

Вызов

Вы должны выводить текущее время непрерывно (до тех пор, пока оно не будет отменено прерыванием), один раз в секунду, любым из следующих способов:

  • Он должен быть в 24-часовом формате или в формате AM / PM.
    • Если это первое, оно должно быть разделено двоеточиями (т.е. 15:47:36).
    • Если это последний, он должен быть разделен двоеточиями и иметь следующий AM / PM (т.е. 3:47:36 PM)
  • Это можно вытащить из интернета.
  • Это может быть системное время.
  • Он должен выводить любую естественно доступную форму вывода, которая поддерживает выбранный вами текст.
  • Вывод может содержать дополнительную информацию помимо времени, но вы должны гарантировать один и только один вывод времени в секунду.
  • Непрерывный выходной сигнал должен быть разнесен на секунду - если вы решите подождать, пока второй изменится между выходными сигналами, это нормально. Если вы подождите секунду между каждым выводом, это вполне приемлемо, несмотря на возможную потерю точности.

Поскольку это каталог, языки, созданные после этого конкурса, могут конкурировать. Обратите внимание, что должен быть переводчик, чтобы представление можно было проверить. Разрешается (и даже поощряется) самостоятельно писать этот переводчик для ранее не реализованного языка. Кроме этого, все стандартные правила должны соблюдаться. Материалы на большинстве языков будут оцениваться в байтах в соответствующей существующей кодировке (обычно UTF-8).

Каталог

Фрагмент стека в нижней части этого поста создает каталог из ответов а) в виде списка кратчайшего решения для каждого языка и б) в качестве общей таблицы лидеров.

Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:

## Language Name, N bytes

где Nразмер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:

## Perl, 43 + 2 (-p flag) = 45 bytes

Вы также можете сделать имя языка ссылкой, которая будет отображаться во фрагменте кода:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

Аддисон Крамп
источник
Включает ли «до отмены прерывания» закрытие программы или нужен механизм для остановки закодированного в ней цикла?
user81655
1
Предупреждение: все sleep 1основанные на правиле 5 нарушения ответа: вы должны гарантировать один и только один вывод времени в секунду. !!
Ф. Хаури
1
Ф. Хаури: Как так? Правило 6 гласит: «Если вы подождете секунду между каждым выводом, это тоже хорошо».
YetiCGN
1
@Jasen Нет, но значение «это хорошо» подразумевает, что опция ожидания все еще действует независимо от возможной потери времени. Я разъяснил это для вас.
Эддисон Крамп

Ответы:

56

Minecraft 1.8.7, 7 + 8 = 15 байт (байт + блоки)

Включен только один командный блок:

xp 1 @p

Вывод идет на клиентскую консоль следующим образом:

раз

Как часть нормального выхода.

Это система:

система

xpдает определенное количество опыта указанному игроку с синтаксисом xp <amount> <player>. Я почти уверен, что это самая маленькая команда с единственным выходом, которую я могу получить сейчас.

Аддисон Крамп
источник
3
Не говорите «19 байт», потому что вы не измеряли размер ответа в байтах.
feersum
6
@feersum Для меня есть причина говорить байты, поверь мне. Это самая близкая вещь к консенсусу для MC на данный момент.
Эддисон Крамп
4
Вы можете использовать устаревшие цифровые коды, не так ли?
Конор О'Брайен
4
Используйте эту систему оценки, если хотите, 19 whatevers, но это не 19 байтов, потому что нет заранее определенной кодировки, которая позволяла бы хранить это решение в 19-байтовом файле.
feersum
1
@ C'O'Bʀɪᴇɴ Мне бы пришлось завернуть в JSON. Если я не использовал 1.6, но это практически другой язык.
Эддисон Крамп
17

JavaScript, 32 байта

setInterval("alert(Date())",1e3)

Использует тот факт, что setInterval оценивает код. Это не рекомендуется, но когда это было проблемой в коде гольф?

Date() возвращает текущее время и дату в таком формате (может отличаться в зависимости от системы).

 Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
intrepidcoder
источник
Будет setInterval(alert,1e3,Date())работать вместо этого?
ETHproductions
@ETHproductions Это всегда показывает одно и то же время для меня
ev3commander
@ETHproductions в вашем примере Date()будет оцениваться только один раз при создании интервала
MMM
15

sh (+ watch), 11 байт

Автор сценария:

watch -n1 .

(без завершающей строки)

Выход:

Every 1,0s: . (SPACES) Sat Nov 28 19:07:51 2015

Количество пробелов зависит от ширины терминала.

Протестировано на Debian8 и NetBSD7.

прошло
источник
Правильный инструмент для работы, +1
Аддисон Крамп
Подождите, это считается языком программирования? Можете ли вы дать мне ссылку на переводчика?
Аддисон Крамп
@VoteToClose watch- это coreutil. Настоящий язык - bash / sh.
Дверная ручка
Так ... не должно ли это быть Bash (distribution), не так watchли? @ Doorknob
Эддисон Крамп
1
Хм Вы должны использовать -pпереключатель, чтобы не нарушать правило, вы должны гарантировать один и только один вывод времени в секунду. !!
Ф. Хаури
15

Snap , 8 7 6 блоков


(Да, я изменил его в MS Paint, потому что мне было лень делать еще один снимок экрана. Ну и что? По крайней мере, его можно прочитать.)
Щелкните сценарий, чтобы запустить
24-часовые часы.

ev3commander
источник
2
Я всегда люблю графические языки программирования. : D +1
Эддисон Крамп
о, эй ev3! Я знаю вас на форумах Snap / Scratch: P, зачем вам Snap, а не Scratch?
anOKsquirrel
2
@anOKsquirrel Потому что мне не нужно вкладывать все эти блоки объединения.
ev3commander
Разве это не должно читаться 9:21:08?
Люк
@Luke Как показывает ответ TI-BASIC, время без начального нуля в выводе хорошо. Это читается человеком и ясно, сколько времени.
Эддисон Крамп
11

Python 2, 47 байт

from time import*
while[sleep(1)]:print ctime()

Нет онлайн-ссылки, потому что время ожидания истекает (huehuehue) перед печатью.

Спасибо @xsot за while[sleep(1)]хитрость и ctimeхитрость.

Распечатывает текущую дату и время следующим образом: Fri Nov 27 21:23:02 2015

Мего
источник
2
/ я медленно хлопаю в каламбур. Очень смешная Мего. ; D
Эддисон Крамп
Я разместил ваше решение для Python 3
jfs
sleep 1основанное на нарушении правило 5 ответа: вы должны гарантировать один и только один вывод времени в секунду.
Ф. Хаури
@ F.Hauri sleep 1заставляет текущий поток спать в течение ровно одной секунды. Это соответствует правилам.
Mego
1
@ F.Hauri Учитывая, что сам автор задачи использует эквивалент sleep(1)как в своем решении AppleScript, так и в своем решении Vitsy + bash , это явно приемлемо.
Mego
9

Perl, командная строка, 24 байта

sleep(say)while$_=gmtime

Это должно быть запущено из командной строки, как perl -E'sleep(say)while$_=gmtime'(в Windows вместо двойных кавычек). Дата будет выведена вместе со временем, которое , по-видимому, разрешено .


Perl, 25 байт

sleep print$/.gmtime;do$0

В скалярном контексте gmtimeвернет строку, аналогичную Sat Nov 28 10:23:05 2015. Результат от print, всегда 1, используется в качестве параметра для sleep. do$0используется для повторного выполнения сценария после окончания таймера.

Примо
источник
2
Как подтверждается решением AppleScript и комментариями @ VoteToClose , вам не нужно тратить время.
Mego
1
Еще один 24-байтовое решение: {sleep say~~gmtime;redo}.
Денис Ибаев
sleep 1основанное на нарушении правило 5 ответа: вы должны гарантировать один и только один вывод времени в секунду .
Ф. Хаури
@ F.Hauri правило было добавлено после того, как этот пост был сделан.
Примо
9

Javascript ES6, 43 39 байт

setInterval(_=>console.log(Date()),1e3)

По крайней мере, работает с моими текущими настройками времени (которые не менялись в течение некоторого времени).

Конор О'Брайен спас 4 байта.

SuperJedi224
источник
оповещение короче?
Maltysen
8
@ Maltysen Я думаю, что во многих браузерах вам нужно закрыть одно окно с предупреждением, чтобы увидеть следующее.
flawr
@Maltysen Я попробовал, как-то портит интервал
SuperJedi224
1
Вам не нужно .toTimeString()в Chrome и FF.
Боб
1
Я думаю, что вы можете заменить new Date()наDate()
Конор О'Брайен
8

Arcyóu , 27 байт

(@ t(pn(zz 1)(p(st %H:%M:%S

Мне пришлось соединить две новые функции для этого вызова, zzи st.

pnТочно так же, как Лисп progn.

zz: Прямая ссылка на Python time.sleep.

st: Прямая ссылка на Python time.strftime.

Обычно кавычки необходимы для строки формата, но поскольку пробелов нет, они анализируются как символ. Интерпретатор оценивает неопределенные символы как самих себя, поэтому мы получаем строку.

bkul
источник
1
Я бы проголосовал, но у меня не осталось голосов. +1; c И приятные обновления. : D
Эддисон Крамп
7

Баш, 51 31 24 21 20 байт

Спасибо @quartata за некоторые очень полезные комментарии. Спасибо @Dennis за разъяснения и за обрезание еще большего количества байтов. Спасибо @VoteToClose за разъяснение правил (которые, по-видимому, я плохо читаю) за дальнейшее сокращение байтов.

dateотображает полную дату с 24-часовыми часами. sleep 1спит на секунду. exec $0зацикливает сценарий бесконечно.

date;sleep 1;exec $0
Liam
источник
Тебе не нужен шебанг.
спагетто
Кроме того, я думаю, что вы можете заменить trueна sleep 1так как sleepвозвращает а 1.
спагетто
date +%T;sleep 1;exec $0немного короче. @quartata Nitpicking: sleepимеет код выхода ноль, поэтому whileпродолжается.
Деннис
3
О, я идиот
спагетто
2
После dateэтого вам не нужно пространство , так что это всего 20 байтов.
ThisSuitIsBlackNot
6

Befunge 98, 53 байта

 v
v>"EMIT"4(>H.8,':,M.8,':,S:.8,d,
>:S-    !!k^

Примечания:

  1. Эта программа не дополняет нулями числа, которые она печатает.
  2. Эта программа печатает пробел, а затем символ пробела после каждого числа, так как .команда печатает неявный пробел в конце.
  3. Размер стека в этой программе увеличивается каждую секунду, и, таким образом, в конечном итоге ему не хватит памяти.
  4. Эта программа перезапишет предыдущий раз, когда напечатает новый. Чтобы он печатался каждый раз на новой строке, измените dна первой строкеa
pppery
источник
Зачем нужна строка «ВРЕМЯ»? Есть ли какой-то способ, которым он захватывает это? (Я не знал об этом)
Аддисон Крамп
"EMIT"4(В начале программы говорит переводчику , чтобы загрузить TIMEотпечатки пальцев, что позволяет H, Mи Sинструкции. (Нет, это не испускает номер 4).
pppery
Это потрясающе . Я даже не думал, что многие эсоланги сделают это, +1.
Эддисон Крамп
@VoteToClose Befunge 98 даже имеет инструкцию для выполнения произвольной программы, извлеченной из стека.
pppery
1
убегает, чтобы выучить этот язык Извините ...
Addison Crump
6

MIRC 7,49 20 16 байт

/timer 0 1 $time
onkarjit
источник
Где мы можем проверить это?
Эддисон Крамп
Вы должны скачать mIRC, это условно-бесплатный IRC-клиент. Вы также можете скачать его с: mirc.com, так как в приведенном выше ответе sayвам понадобится подключиться к серверу, а затем присоединиться к каналу. в противном случае вы бы использовали echoвместо say. MIRC имеет свой собственный язык сценариев mSL (язык сценариев mIRC)
onkarjit
5

AutoHotkey, 50 байт

x::Send,% a!=A_Sec? A_Hour ":" A_Min ":" a:=A_Sec:

Примечания:

  1. Требуется удерживать xдля непрерывного вывода.
  2. Уберите палец, xчтобы прервать и закончить вывод.
  3. Выход в 24-часовом формате.
errorseven
источник
2
Вы можете за несколько дополнительных байтов поместить это во всплывающую подсказку, чтобы пользователь не удерживал ее x.
Мишельфрансис Бустильос
5

C (в Linux x64), 179 177 175 168 159 байт

#include<time.h>
#include<sys/time.h>
main(){struct timeval a;char b[9];for(;;){gettimeofday(&a,0);strftime(b,9,"%T",localtime(&a.tv_sec));puts(b);sleep(1);}}

Ungolfed:

#include <time.h>
#include <sys/time.h>
main(){
  struct timeval a;
  char b[9];
  for(;;){
    gettimeofday(&a, 0);
    strftime(b, 9, "%T",localtime(&a.tv_sec));
    puts(b);
    sleep(1);
  }
}

Только на Linux x64 и, вероятно, только на ее функциях (x32 может работать, но другие платформы, вероятно, не будут).

Основным отличием этой программы от других опубликованных программ на C является использование исключительных вызовов linux-функций, которые, хотя и являются ужасной практикой для реального программного обеспечения, экономят немало байтов ... если игнорировать все предупреждения компилятора.

Gamerdog
источник
Добро пожаловать в PPCG! Если я не ошибаюсь, я верю, что вы можете убрать пробел между #includeи <...>. Кроме того, вы можете использовать 1e6вместо 1000000?
Эддисон Крамп
@VoteToClose Вы были правы насчет пробелов в #includeс. Это не похоже на то, что usleep () принимает 1e6, хотя - основываясь на том, как быстро он начинает выплевывать метки времени, он просто интерпретирует его как 1.
Gamerdog
¯ \ _ (ツ) _ / ¯ Я тоже не знаю C. Я позволю профессионалам в этом. Добро пожаловать еще раз, проголосуйте. : D
Эддисон Крамп
Ах, другое дело - вам не нужно обрезать строку только для времени, поэтому вы можете просто вывести все время даты при условии, что в нем есть нужная строка времени.
Аддисон Крамп
2
Вы можете использовать %Tв качестве спецификации формата в strftime.
Мего
5

Джольф , 14 8 7 байт

Вычеркнуто 14 является ударом 1? Нау, это никогда не зацепит;)

Попробуй это здесь! Нажмите Run, не нажимайте на что-либо еще ^ _ ^ страница очень ... взрывоопасна. Да. Исправлена ​​система вывода с обновлением.

TaD#`~2

(Я добавил некоторые константы, и ~1к ~4являются степенями 10.)

объяснение

setInterval("alert(Date())",1000);
     T         a      D#   ` ~2
Конор О'Брайен
источник
4
Кто-то должен создать YAJSGV (еще один вариант игры в гольф на JavaScript).
intrepidcoder
Кажется, это печатает намного больше, чем просто время.
Деннис
1
@ Денис Я предположил, что это было хорошо, как в других решениях
Конор О'Брайен
Мой плохой, я только прочитал ваш и ответ Bash.
Деннис
@ Денис Не проблема ^ _ ^
Конор О'Брайен
5

Дьялог АПЛ , 27 18 16 байт

':',¨⎕TS⋄→≢⎕DL 1

Попробуйте онлайн!

⎕TSYMD hmst
':',¨prepend: каждому
новому оператору
⎕DL 1подождите секунду и верните фактическое время ожидания; 1,0 секунды
подсчитывают фактическое время ожидания , давая 1
перейти к строке (1 = эта строка)

Адам
источник
4

Perl 6 , 29 байт

Право способ сделать это:

Supply.interval(1).tap: -> $ {
  say join ':',.hour,.minute,.whole-second given DateTime.now
}
await Promise.new; # halt this thread indefinitely
22:21:58
22:21:59
22:22:0
22:22:1
22:22:2
…

Версия для гольфа

loop {sleep say join ':',now.polymod(1,60,60,24)[31]} # 56 bytes
3:59:26
3:59:27
3:59:28
3:59:29
…

Поскольку вывод не должен быть ограничен только временем, я могу сделать его немного короче.

loop {sleep say DateTime.now} # 29 bytes
2015-11-27T22:18:10-06:00
2015-11-27T22:18:11-06:00
2015-11-27T22:18:12-06:00
2015-11-27T22:18:13-06:00
…
Брэд Гилберт b2gills
источник
4

R, 38 байт

repeat{Sys.sleep(1);print(Sys.time())}

Это выводит текущее время в следующем формате:

[1] "2015-11-28 07:34:01 CET"
Свен Хоэнштейн
источник
4

Powershell, 19 байт

for(){date;sleep 1}
Данко Дурбич
источник
Как уже было отмечено, выходной сигнал должен включать в себя значение чч: мм: сс, которое вы можете уменьшитьfor(){date;sleep 1}
Стив
4

PHP, 37 байт

<?=date('G:i:s');header('refresh:1');

Выводит отформатированное время сервера и настраивает страницу на обновление каждую секунду.

Конечно, это зависит от вашего интернет-соединения и от того, насколько быстро ваш сервер отвечает :)

демонстрация

nicael
источник
Нет, не освежает:Warning: Cannot modify header information - headers already sent
Martijn
@ Martijn Я понятия не имею, с чем ты можешь связываться, потому что это работает для меня :)
nicael
Я уберу понижение в пользу сомнения, но это работает ровно один раз для меня. Пробовал на двух разных штатных серверах.
Мартейн
2
Зависит от того, включена ли у вас выходная буферизация.
Андреа
<?=header('refresh:1').date('G:i:s');должен работать с любой настройкой выходной буферизации.
Ясен
4

VBA, 69 байт

Получить время просто, now()выводить только 1 секунду ... НАМНОГО более многословно.

Это «правильный» способ ожидания 1 секунды в VBA. 78 байт

Sub a():Debug.Print Now():Application.Wait Now()+TimeValue("0:0:1"):a:End Sub

Или, если вы хотите сократить некоторые углы, и достаточно быть правым только в 86% случаев, то достаточно 63 байтов,
добавив один SigFig, вы получите точность 95%, а третья - 99,36%.

Sub a():Debug.Print Now():Application.Wait Now()+1e-5:a:End Sub

Если вы хотите, чтобы вышеуказанный метод до 100%, то вам нужно 69 байт (1/86400)

Sub a():Debug.Print Now():Application.Wait Now()+(1/86400):a:End Sub

Все эти методы могут натолкнуться на високосную секунду, потому что они не ждут 1 секунду, но ждут до 1 секунды. В полночь, когда часы возвращаются на час назад, эти часы останавливаются на 1 час, а затем начинают с того места, где они остановились.

VBA допускает использование Sleep Method, но ваш байтер находится в руинах. 97 байт

Declare Sub Sleep Lib "kernel32" (ByVal k as Long)
Sub a():Debug.Print Now():Sleep(1e3):a:End Sub
JimmyJazzx
источник
3

JavaScript, 47 38 35 байт

for(p=1;t=Date();p=t)t!=p&&alert(t)

объяснение

Постоянно проверяет, изменилось ли время, затем alerts, если оно изменилось .

for(
  p=1;
  t=Date();
  p=t
)
  t!=p
    &&alert(t)
user81655
источник
Вам не нужно просто получить строку времени. ; D Пока он где-то там.
Эддисон Крамп
@VoteToClose О, правда!
user81655
Не думаю, что вам нужно +"", как без new, Date()возвращает строку.
ETHproductions
@ETHproductions Ах, да, это осталось от того, когда он использовал new. Спасибо, что поймали это!
user81655
3

AppleScript, 51 35 байт

повторение
записать текущую дату
задержка 1
конец

Довольно чертовски очевидно. Печатает текущую дату, которая содержит время, задерживает секунду, затем продолжается.

Аддисон Крамп
источник
1
Итак, подождите, можно ли распечатать текущую дату и время?
спагетто
@quartata Да, любая конкатенация со временем, если время непрерывно выводится и гарантированно выводится, это нормально.
Эддисон Крамп
задержка 1 делает что? пауза для 1000000000 нс?
Ясен
@Jasen Это правильно.
Эддисон Крамп
3

𝔼𝕊𝕄𝕚𝕟, 13 символов / 25 байтов

Ĥ⇀ôᶁ⬮+⬬),1𝕜)

Try it here(Firefox only).

Это на удивление читабельно.

Mama Fun Roll
источник
4
Когда вы говорите «удивительно читаемый», вы знаете, что имеете дело с забавным языком. +1
Эддисон Крамп
3

Дьялог АПЛ, 36 байт

Не очень короткое время

{⎕←1↓∊'⊂:⊃,ZI2'⎕FMT 3↑3↓⎕TS⋄∇⎕DL 1}1

Это выводит 24-часовое время, то есть:

14:37:44
14:37:45
14:37:46
...

Объяснение:

  • {... }1: определить функцию и вызвать ее (аргумент игнорируется, но нам нужна функция для ее рекурсивного вызова)
    • ⎕TS: системная функция, которая возвращает текущую дату и время в формате год - месяц - день - час - минута - секунда - миллисекунда . ( ⎕TS= Т IME с TAMP)
    • 3↑3↓: отбросьте первые 3 элемента (т.е. год - месяц - день), а затем возьмите первые 3 элемента, которые остались (час - минута - секунда).
    • '⊂:⊃,ZI2'⎕FMT: отформатировать каждое число как двузначное целое число ( I2) с ведущими нулями ( Z) с префиксом двоеточия ( ⊂:⊃). (Это приводит к матрице.)
    • : Получить все элементы в матрице в порядке строк. (Это дает вектор, в данном случае строку.)
    • 1↓: удалить первый символ (который является дополнительным :)
    • ⎕←: выведите это
    • ⎕DL 1: затем подождите одну секунду ( ⎕DL= d e l ay)
    • : вызвать функцию рекурсивно
Мэринус
источник
{⎕←1↓∊':',¨⍕¨3↑3↓⎕TS⋄∇⎕DL 1}1для 28 байтов достаточно согласно OP .
Адам
Новые правила допускают вывод мусора и случайные пробелы, поэтому вы можете избавиться от многих проблем.
Адам
3

Haskell, 98 96 85 байт

import GHC.Conc
import Data.Time
m@main=getCurrentTime>>=print>>threadDelay(10^6)>>m

Альтернативная версия с использованием нотации do:

main = do
  time <- getCurrentTime
  print time
  threadDelay 1000000
  main

Получает текущее время getCurrentTimeиз Data.Timeбиблиотеки, затем передает его в printканал, ждет 1 000 000 микросекунд (1 секунда) и вызывает себя.

Спасибо Ними и Маурис!

Крейг Рой
источник
m@main=...>>mвсегда корочеmain=...>>main
Линн
Кроме того, поскольку threadDelayGHC-специфичен в любом случае, вы можете импортировать его из GHC.Conc
Линн
3

Пакет - 34 40 байт

Я люблю встроенные переменные:

:A                    //Set label A
echo %time%           //Print the time in 24 hour format
timeout 1    //Wait 1 second (thanks DavidPostill)
goto A                //Jump back to A and repeat

Определенно должна быть какая-то sleepкоманда в Batch в ближайшее время.

GiantTree
источник
Нет встроенного сна, но есть тайм-аут . Вы можете заменить ping ...с timeout 1. Также часы не очень точны при использовании ping. Лучше с timeout;)
DavidPostill
@DavidPostill спасибо за совет, я никогда не знал, что такая команда была в Windows. :)
GiantTree
@GiantTree Добро пожаловать;)
DavidPostill
Гольф: убрать :Aи заменить goto Aна%0
stevefestl
3

Python 3, 99 байт

Извините, если он форматирует код странно, делая это с iPad. (не спрашивайте). Я знаю, что этот код большой, учитывая некоторые другие ответы, но я еще не видел Python, поэтому я хотел добавить его.

import time
import datetime
while(True):
 print(datetime.datetime.now().time())
 time.sleep(1)  
Эшвин Гупта
источник
Вы можете заменить Trueс 1, и если вы поместите printи sleepлинию на ту же линию, что и while(отделенной точкой с запятой) , что избавляет вас от пробелов.
подземная
@undergroundmonorail ок, спасибо за совет True / 1. Я не привык к этому, так как Java Dosent делает это. Я не знал, что у Python тоже есть точки с запятой. Я посмотрю на это
Эшвин Гупта
3

Java, 300 166 137 125 124 байта

Почти вдвое больше, чем благодаря VoteToClose, Paülo Ebermann и janschweizer!

interface A{static void main(String[]a)throws Exception{for(;;Thread.sleep(1000))System.out.println(new java.util.Date());}}

Ungolfed:

interface A {
    static void main(String[] a) throws Exception {
        for (;; Thread.sleep(1000)) System.out.println(new java.util.Date());
    }
}
кошка
источник
1
Упростите импорт: java.util.*вместо двух java.utilимпортов java.text.*по тем же причинам. Используйте for(;;)для бесконечных циклов. Используйте String[]aв основной декларации. Используйте interface A{static void main(..., так как это сократит его еще больше. Вы можете использовать Exceptionболее InterruptedException, и вы можете заменить exна e. Вы также можете удалить весь текст внутри улова, так как в любом случае это ничего не делает.
Эддисон Крамп
1
Да, интерфейс немного дурацкий - я понятия не имею, почему Java допускает это, учитывая, что интерфейсы специально разработаны для того, чтобы их нельзя было запускать.
Эддисон Крамп
1
Две вещи: вам нужно изменить строку времени на «ЧЧ: мм: сс» - на данный момент вы форматируете «Час: Месяц: Второй». Кроме того, поскольку вы используете цикл, вы можете полностью избавиться от объявлений DateFormatи Calendarпеременных. Вы заменяете содержимое цикла for на System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}.
Аддисон Крамп
1
Все, что я только что предложил, обернуто:import java.util.*;import java.text.*;interface A{static void main(String[]a){for(;;){System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}}}}
Аддисон Крамп
1
throws Exceptionкороче, чем попытка / улов
фаза
3

Perl, 99 81 75 51 40 36 29 27 байт

sleep(print gmtime.$/);do$0
Стив
источник
1
Вы можете сократить его, используя gmtimeвместо localtime.
Брэд Гилберт b2gills
2
Такжеprintf"%02d:%02d:%02d\n",(gmtime)[2,1,0]
Брэд Гилберт b2gills
1
gmtime."\n"заставит скалярный контекст.
Примо
1
Вы почти никогда не должны делать ."\n"в гольфе: используйте, .$/чтобы сохранить 2 байта. По крайней мере, используйте буквальный перевод строки вместо того, \nчтобы сохранить 1 байт.
ThisSuitIsBlackNot