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
или этот формат даты не имеет значения?It's beer o'clock
, но я сопротивлялся.12:32 PM
или12:32PM
? А не12:32p.m.
?Ответы:
Баш,
3933 байтаПотрачено впустую кучу символов, потому что спецификация требует
a.m.
илиp.m.
покаdate
выводитam
илиpm
. Спасибо @DigitalTrauma за сохранение 6 байтов!Это может быть не очень портативным. Работает на Ubuntu 15.04.
Решение, которое использует практически тот же метод в Ruby
, который удивительно точно такой же длины:Рубин, 39 байт
источник
%P
дает мне прописные буквы AM или PM. Я на Mac, если это имеет значение.%P
строчные буквы и%p
прописные буквы (что немного ... не интуитивно понятно).date
(в Linux и др.) И * BSDdate
(где OSX - это один вариант BSD) имеют совершенно разные варианты и поведение, когда вы выходите за пределы набора функций, указанного в POSIX. Поэтому, возможно, в этом ответе стоит упомянуть Bash для Linux. (Это относится и к томуsed
же; но этот конкретный вызов прочно входит в безопасный и переносимый набор функций.)echo -e "It's $(date +%I:%M%P)\b.m."
- вместоsed
использования Backspace. Не похоже на отдельный ответ для меня. Кроме того, у меня нет am / pm, но я думаю, что это из-за локали.AppleScript, 198
Потому что AppleScript. Потому что почему бы и нет
Это было больно.
источник
PHP,
3533 байтаИспользование неправильного инструмента для работы!
Он просто удаляет
m
в концеam
илиpm
, чтобы добавить точки. Дата приходит как00:00am
и сtrim
ней становится00:00a
.Старый ответ (только PHP 5.4+):
Это работает, потому что вы можете отменить ссылку на значение, возвращаемое функцией. Это невозможно в PHP5.3 или старше.
источник
@
оператора, и предполагать, что с ним будут работать людиerror_reporting(0)
?Visual Basic 6 / VBA,
4241 байтИспользование
MsgBox
, так как VB6 не имеет консоли (если только вы не перехватываете ссылки, не ссылаетесь как исполняемый файл консоли, не используете некоторые хаки Windows API и не делаете другие хитрые вещи).источник
m
на.m.
? то естьDebug.Print Replace(Format(Now,"hh:mm am/pm"),"m",".m.")
Р,
68,59626055(Спасибо @ Alex.A. И @flodel для комментариев) принимает текущее системное время (
Sys.time()
), форматирует его правильно , используя%I:%M%P
комбинацию, добавляет точку в конце, и заменяетm
с.m.
.источник
Юлия,
745443 байтаВы можете попробовать это онлайн !
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.time()
)print(strftime("It's %I:%M%P",time())[1:11],".m.")
print(strftime("It's %I:%M%P\b.m.",time()))
Haskell, 135 байт
Я нашел гораздо более забавным,
main
это на пять байтов больше:Или 66 байтов в Unix:
источник
Pyth,
3836 байтСохранено 2 байта благодаря @Jakube!
источник
MATLAB, 59 байт
Если разрешено иметь пробел между временем и часами / часами, тогда это может быть всего 52 байта :
источник
05:38p.m.
\b
это так ... Вам нужно дополнительное пространство между прочим.Perl 5.10+,
5862 байтаДолжен быть запущен с
-M5.010
флагом командной строки, чтобы получитьsay
.Я не учел пару крайних случаев в моем первоначальном решении (а именно,
00:**
и12:**
); исправлено за счет 4 дополнительных байтов.Как это устроено
В скалярном контексте
localtime
возвращает строку, подобную этой:Поле минут уже заполнено нулями, что сохраняет некоторые байты (в контексте списка
localtime
возвращает числа вместо строк, поэтому вы должны дополнять их самостоятельно).Вот это не разгромлено:
Perl 5.14+, 57 байт
(Просто для удовольствия, так как это немного растягивает правила.)
51 байт + 6 байт для
-MPOSIX
. Необходимо также запустить с-M5.010
флагом командной строки, чтобы получитьsay
.Это решение зависит от вашей локали, поэтому не будет работать на всех системах. Он также использует модуль POSIX, который может растягивать определение «встроенного», даже если это основной модуль.
Perl 5.14+ требуется для неразрушающего
r
модификатора оператора подстановки. Эквивалентное решение, которое работает на 5.10+:Это также 57 байт (51 байт + 6 байт
-MPOSIX
).источник
Perl 5, 74 байта
Небольшая демонстрация того, как переменные оцениваются справа налево.
Использование POSIX: 80 байт
Использование POSIX с временной зависимостью и переключателями: 54 байта (48 + 6)
Тестовое задание
источник
-MPOSIX
вместо этогоuse POSIX;
, отбрасывая скобки в вашем вызовеstrftime
и заменяяprint
наsay
(-M5.010
бесплатно ). Что сокращает ваше последнее решение до 54 байтов!-MPOSIX
(6 байт), но вы можете сохранить 2 байта, понижая скобки:$_=strftime"It's %I:%M%P",localtime;
. Это дает 54 байта, что все же лучше, чем у моего 57-байтового решения POSIX. Отлично сработано!CJam, 40 байтов
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Mathematica
49 90 92 9084 байта-6 байт благодаря пользователю 202729
Решение простое, но немного многословное, в Mathematica.
источник
StringReplace
можно удалить, сохраняя 6 байт.(d=DateString)@{"It's ","Hour12",":","Minute"}<>d@"AMPM"/."AM"->"a.m."/."PM"->"p.m."
T-SQL (2012+),
6765 байтSQL Server 2012 наконец-то дал нам разумную функцию форматирования дат. Мне все еще приходилось возиться с AM / PM, чтобы получить правильный формат.
В предыдущих версиях нужно было что-то вроде этого (93 байта)
источник
PHP, 49 байт
Если бы только это было
am/pm
вместоa.m./p.m.
...Я использовал много неприятных байтов, чтобы сэкономить немного длины, поэтому вот гекс:
Читаемая версия:
источник
C
10394 байтаUngolfed
источник
PHP, 41 байт
It's <?=strtr(date('g:ia'),['m'=>'.m.']);
Впервые я играл в это. Не уверен, если я должен обновить / отредактировать предыдущий ответ PHP (49 байт) или просто добавить свой собственный ...
источник
[m=>'.m.']
, что экономит 2 байта. (Предупреждения можно игнорировать, поэтому не беспокойтесь о них.)SQL (PostgreSQL),
4241 байтДругой вариант SQL, но этот в запросе.
Как примечание, или pm или am работает, чтобы получить часть am / pm. Параметры форматирования в PostgreSQL действительно довольно гибкие. Спасибо @manatwork за подсказку по перемещению
it's
в строку формата.SQLFiddle
источник
+ time '12:00'
послеnow()
SQLFiddle, он должен изменить am / pm.select to_char(now(),'"It''s" HH:MIa.m.')
CJam, 43 байта
Необходимость дополнить числа нулями делает это больше, чем хотелось бы. В конце концов, форматирование строк было самым коротким способом.
Попробуйте онлайн .
объяснение
источник
12:37
этого выводит00:37
.Javascript, 103 байта
Javascript выполняется из консоли.
C #, 63 байта
C # выполняется из непосредственного окна.
источник
d.length
, вы можете просто написать,-n
и он будет рассчитывать с конца, просто к вашему сведению.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 байтов.toLocaleTimeString("en-US")
86 байтов.Баш, 44 персонажа
Чистый Bash, просто встроенные оболочки, никаких *** утилит.
Образец прогона:
источник
Powershell, 49 байт
(date).hour/23
кажется, работает как индекс для,"ap"
потому что он округляется до0
часов меньше 12 и1
для 12 и выше.источник
"It's $(date -f hh:mm)$("pa"[(date).hour-lt12]).m."
"{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."
date
[datetime]
актеры всегда в США . Это означает, что что-то вроде этого"It's $(("{0:h:mmt}"-f[datetime](date)).ToLower()).m."
возможно ... что, конечно, на 54 байта и длиннее, чем ваше текущее решение, но все же интересная особенность языка.Локальнозависимый
Для сред браузера, для которых установлен языковой стандарт
en-CA
или любой языковой стандарт с 12-часовым временем по умолчанию:CoffeeScript, 81 байт
JavaScript (ES5), 90 байт
Locale-независимый
CoffeeScript,
11396 байтПредыдущая:
Этот работает во всех браузерах независимо от локали. Требуется Chrome 24+, Firefox 29+, IE 11+, Opera 15+ или любые их производные. Не работает в Safari. Видеть
Intl.DateTimeFormat
.источник
It's 2:59: m.m.
en-US
Swift -
124102 байтаисточник
C 154 байта
В отличие от другого ответа C, этот использует правильный формат «am» / «pm». Другой постер пропущен
#include <time.h>
- если ваш компилятор позволяет это, мы получаем 136 байтов. Кого мы должны считать?источник
time.h
. Редактирование.Moonscript - 56 байт
К сожалению, стандартная библиотека Lua реализует только% p для прописных букв AM / PM, поэтому я должен вызывать метод более низкий.
источник
SpecBAS - 64 байта
Встроенная
p$
функция времени возвращает AM или PM, поэтому ее необходимо отформатировать,REPLACE$
чтобы изменить, чтобы она имела полную остановку до / после этой буквы.Затем вывод времени пришлось преобразовать в строчные.
источник
MATLAB, 66 байт
Вывод:
источник
Python 2,
756766 байтстарая версия, 75 байт
старая версия, 75 байт
источник
Python 3,
1178779 байтовЭто получает часы и минуты от 12-часовых часов, используя формат
%I:%M
, плюсam
илиpm
используя%P
. Затем мы выбираем все, кроме последнегоm
и добавляем.m.
.Сохранено несколько байтов благодаря Рут Франклин!
источник
datetime
один раз, он на 6 байт корочеfrom datetime import*; h=datetime.now() ...