Tarih ne?


26

Meydan okuma

Garip bir şekilde, bu henüz yapılmadı: Geçerli tarihi gösterir.

kurallar

İzlemeniz gereken tarih formatı aşağıdaki gibidir:

YYYY-MM-DD

Ay ve günün 10'dan küçük olması durumunda sıfırlarla doldurulması gerekir.

Örneğin, program 24 Mayıs 2017’de çalıştırılıyorsa,

2017-05-24

Tarih her zaman UTC’de veya yerel tarihte olabilir.

Artık yıllarla başa çıkmalısın. yani artık yıllarda Şubat, normal bir yılda 29 güne 28 güne sahiptir.

Kazanan

Bayt cinsinden en kısa kod kazanır.


14
Mutlu 10k temsilcisi!
Rohan Jhunjhunwala

1
Ve gördüğüm en hızlı büyüyen iplik için tebrikler. : D
Titus

@Titus Merhaba, Dünya görmeliydin! : D
Beta Çürümesi

... ve normal yıllarda
şubatın

@ edc65 Şubat ayının artık yılların 29 gün boyunca olduğunu bilmeliydim: P
Beta Decay

Yanıtlar:


12

Bash , 16 7 bayt

Neil (ve fergusq) sayesinde -8 bayt (çıkış için boru gerekmez)
-1 12431234123412341234123 sayesinde (baytla yerleşik seçeneği kullanın -I!)

date -I

Çevrimiçi deneyin!


2
Neden echo $(...)?
Neil,

Çıktısına gerek yok mu?
Jonathan Allan

6
datezaten çıktılar, çıktı stdout'a iletildi. Borusuna gerek yok echo, hangi boruyu kaynatmak için boruya ihtiyacınız yok . Çevrimiçi deneyin!
fergusq

Ama gerçekten kullanmak istemesen bile echo, en azından echo `date +%F`.
Manatwork

5
neden kullanmaz -I?
12431234123412341234123

10

PHP, 17 bayt

<?=date('Y-m-d');

1
Aslında, YYYY-MM-DDThh:mm:ss+hh:mmaynı zamanda bir ISO 8601 biçimlendirilmiş tarih ve bu 11 bayt: <?=date(c);tüm şeyler yazdırın. ;)
Titus

<?=strstr(date(c),T,1);c formatına küçük bir şans vermek
Jörg Hülsermann


7

Bash, 15 bayt

printf '%(%F)T'

Örnek çalışma:

bash-4.4$ printf '%(%F)T'
2017-05-24

Çevrimiçi deneyin!


SO üzerinde bulduğumdan daha iyi, habersizdi T.
Jonathan Allan

@JonathanAllan, yalnızca Bash 4.2'de eklenmiştir ve Bash 4.3'e kadar biçimlendirmek için bir argüman gerektirmiştir.
Manatwork


4

SQLite, 13 karakter

select date()

İyi çocuk SQLite. Diğer SQL lehçeleri genellikle current_dateveya birine ihtiyaç duyar date(now()).

Örnek çalışma:

bash-4.4$ sqlite3 <<< 'select date()'
2017-05-24

1
MySQL varcurdate
Titus

4

Mathematica, 20 bayt

DateString@"ISODate"

9
Bazen, Mathematica'nın yerleşik olup olmadığını görmek için değil, ne olduğunu görmek için bu zorluklarla karşılaşıyorum
PunPun1000


3

Excel, 24 bayt

=TEXT(NOW(),"yyy-mm-dd")

Excel yine de sadece 3'lü 4 haneli bir yıl yapacak y.


2
Google levhalar ekleyecektir "). Excel olmaz. Bu olacak eklemek )ucunda ama sadece istemeden sonra ek kullanıcı girişi gerektirmeyen ve yine puan yukarı götürmek istiyorsunuz bu yüzden. Varsayılan olarak ISO tarih biçimini kullanan bölgesel ayarlara izin vermediğimiz sürece 24 bayt, muhtemelen en kısa Excel cevabıdır ve tartışma için hazırdır .
Mühendis Toast

@EngineerToast Teşekkürler. Bunu düzelteceğim.
Scott Milner

2

R , 10 bayt

Sys.Date()

Çevrimiçi deneyin!


1
Yana sys.datezaten bir fonksiyondur, eklemek gerekmez ()bu sadece 8 bayt :) yani,
JAD

@JarkoDubbeldam doğru değil, () gereklidir
D. Nelson

@ D.Nelson codegolf.meta.stackexchange.com/questions/2419/… Sys.Date bir fonksiyondur, bu yüzden çözüm olarak yeterli olacaktır. Açıkça aramana gerek yok.
JAD

@JarkoDubbeldam normalde durum budur, ancak zorluğun 'şu anki tarihi ISO-8601 biçiminde göstermesi' olduğunu düşünüyorum.
Giuseppe

1
Evet, ve son satır Sys.Datesizin için çıkış yapar. Başladığınız bir çözüme sahip olduğunuzda, buna benzer function(x)bir çağrıyla da bitmezsiniz. Bu sadece yerleşiklerin puanlanmasıdır.
JAD


2

Alice , 9 bayt

/oT\
@%;'

Çevrimiçi deneyin!

açıklama

Tam kontrol akışını okuyucuya bir egzersiz olarak bırakacağım, ancak Ordinal modda çalıştırılmakta olan doğrusallaştırılmış kod:

%T'T%;o@

Ve burada ne var:

%   Split an implicit empty string around an implicit empty string. Really doesn't
    do anything at all.
T   Push the current datetime as a string like "2017-05-24T20:53:08.150+00:00"
'T  Push "T".
%   Split the datetime string around the "T", to separate the date from the time.
;   Discard the time.
o   Output the date.
@   Terminate the program.

Bunun golf oynayabilmesinin bir yolu %, programı Kardinal modunda bir bölmeyle sıfıra bölmek için yeniden kullanmaktır , ancak karşılaştığım tek düzen aşağıdaki gibidir:

\;T
\%o'

Fakat burada, %program aslında sona ermiyor, çünkü 111 ( 'o) 'i hemen önümüze alıyoruz, bu yüzden asla sıfıra bölünme olmaz.

Prensip olarak , zamandan %kurtulmak için yeniden kullanmak mümkün olabilir ;, çünkü tarihi zamana göre bölmeye çalışmak, sadece zamanı ortadan kaldıracaktır.


2

SmileBASIC 3, 29 bayt

SB'nin yerleşik bir tarih dizesi var ... ama yanlış formatta! Çizgiler yerine eğik çizgi kullanır, işe yaramaz. Artı, kendine güvenen BASIC olduğu için, küresel bir değiştirme işlevi yoktur. Sanırım kendim yapmalıyım.

D$=DATE$D$[4]="-
D$[7]="-
?D$

2

VBA, 5 25 bayt

?Date öngörülemeyen, sistem kısa tarih ayarlarına bağlı

?Format(Now,"yyyy-mm-dd")

Çıktı:

2017-05-25 

6
Bu cevap son derece değişkendir ve işitme engelli olarak, çoğu kullanıcının sistemindeki kısa tarih biçimini [ayarlar altında -> Win10'da Tarih ve Saat] 'YYYY-AA-GG . The default format for this is / D'ye ayarlanmış olmasına bağlı olduğundan, çoğu bilgisayarda çalışmaz. / YYYY` ve bu nedenle Datefonksiyonun çıkışı için bu 5/25/2017. Bunu düzeltmek için cevabınız bir Formatçağrıya sarılmalıdır .
Taylor Scott

2
Bu amaçla @TaylorScott ?format(now,"yyyy-mm-dd")kullanarak nowdaha kısadırdate
Greedo

1
@Greedo, bu doğru. Bu, bildiğim
Taylor Scott

1
@TaylorScott, bunu gösterdiğiniz için teşekkür eder, sistem tarih ayarlarına bağımlılığın farkında değildim. Bu tarih biçimi olduğunu ben biraz güvenen buraya bu yüzden, benim PC'de ve genelde Ülkemde varsayılan.
Maciej Lipinski


1

QBIC , 33 bayt

B=_D?_sB,-4|+@-`+_sB,2|+A+_sB,4,2

Açıklama:

B=_D        Assign the system's date to B$
            This is in American mm-dd-yyyy format, so we'll need to do some reformatting
?_sB,-4|    PRINT substring B, take 4 chars from the right
 +@-`         plus the string literal "-", now A$
 +_sB,2|      plus the leftmost two chars
 +A           and A$ again
 +_sB,4,2     plus the middle part.

1

CJam , 22 15 bayt

et3<{sY0e[}%'-*

Çevrimiçi deneyin!

Challenger5 sayesinde -7 bayt.

Açıklama:

et                       Get array with [year,month,day,stuff...]
  3<                     Slice array to get [y,m,d] 
    {                    For each item do:
     s                     To string
      Y0e[                 add a 0 to the beginning of the string if it is shorter than 2 chars.
          }%             End for each
            '-*          Join the array with "-" as a separator

e[15 bayt için (pad array) kullanabilirsiniz :et3<{sY0e[}%'-*
Esolanging Fruit

@ Challenger5 bu harika. Teşekkürler
FrodCube



1

Oracle SQL, 46 bayt

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL

1

Powershell, 26 17 bayt

Date -f yyy-MM-dd

9 bayt için @ConnorLSW teşekkürler.


Burada çok tasarruf edebilirsiniz. date -f 'yyyy-MM-dd'
colsw

Teşekkürler dostum. Powershell'de yeniyim. Bu yüzden şansımı burada denedim
Sivaprasath Vadivel

@Shivaprasath V - endişelenmeyin, isterseniz bu daha temel PS golf hileleriyle birkaç faydalı yazı için bu konuyu kontrol edin .
colsw


1

MATLAB / Octave , 25 15 bayt

datestr(now,29)

Çevrimiçi deneyin!


nowYerleşik işlev , geçerli sistem tarihini garip bir MATLAB seri biçiminde döndürür.

datestrgarip seri formatı istenen formatın bir dizgisine formatlar - bu durumda 'YYYY-mm-dd'. MATLAB'ın önceden tanımlanmış formatların bir listesine sahip olduğu ortaya çıktı datestr. ISO8601 bunlardan biridir ve 10 byte tasarruf sağlayan 29 sayısı ile temsil edilir.


1

Python 2 ,  53  40 bayt

Gábor Fekete sayesinde -10 bayt (ISO-8601, bir tarih nesnesi için varsayılan biçimdir)

from datetime import*
print date.today()

Çevrimiçi deneyin!

Nasıl?

datetime.date.today()datetime.dateyerel tarih bilgisini içeren bir nesneyi döndürecektir .

printbu nesnenin bir dize gösterimini yazdıracak, bu nesnenin __str__işlevini çağıracak .

Gönderen docs :

  • date.__str__(): Bir date d , str(d)eşdeğerdir d.isoformat().

  • date.isoformat(): ISO 8601 biçiminde stringtarihi temsil eden bir a . Örneğin, .‘YYYY-MM-DD’date(2002, 12, 4).isoformat() == '2002-12-04'


1
import datetime;print datetime.date.today()bu sadece 43 bayttır ve datetime kullanır. Neden daha kısa versiyon silinir?
Gábor Fekete

@ GáborFekete Teşekkürler (Ben gerçekten göndermiş olması gerektiğini, yeterince farklı olması gerektiğini düşünüyorum). Diğer cevap muhtemelen doğru biçimlendirilmiş dizgeyi basmadığı için silinmiştir. Bunun neden işe yaradığına dair bir açıklama ekledim (sürece dahil olduğu sürece print). Diğer üç şeyi (kötülükten) kurtardım import*.
Jonathan Allan

İstedim ama benimkinden daha kısa olan ancak bir nedenden dolayı silinen başka bir çözüm vardı.
Gábor Fekete

... printsilinmiş olan süreyi içerecek şekilde düzenlenmiştir .
Jonathan Allan


1

Pas, 84 Bayt

extern crate chrono;fn main(){print!("{}",chrono::Local::now().format("%Y-%m-%d"));}

1

C #, 46 45 bayt

_=>System.DateTime.Now.ToString("yyy-MM-dd");

@Raznagul sayesinde bir bayt kaydedildi.


2
Nereden indirebilirim Sytem?
Outgolfer Erik,

6
@EriktheOutgolfer Bu Systemaynı yazım hatası yapmaya devam ettiğim için isim alanının etrafında oluşturduğum özel bir sarıcı ...
TheLethalCoder

4
Yerel olarak oluşturduğunuz şeylere, soru sorulmadan önce yayınlanmadıkça PPCG'de izin verilmediğini biliyorsunuz. : P
Outgolfer Erik,

1
@EriktheOutgolfer Lanet olsun, bir dahaki sefere ben de daha kısa bir sarıcı yaratacağım ...
TheLethalCoder

1
Yılın ilk sıfırları gerekli olmadığından, biçim dizgisi "yyy-MM-dd"de çalışır.
raznagul

1

Java 8, 26 32 bayt

()->java.time.LocalDate.now()+""

Kevin Cruijssen sayesinde sabit format


Vay, Java aslında kısa ... Asla günü göreceğimi düşünmezdim: D
Beta Decay

@BetaDecay Kısa, ancak şu anda standart kod kuralları kurallarına uymuyor. Snippet yerine bir işlev olmalı ve gerekli ithalat da sayılmalıdır. Yani bunun ()->java.time.LocalDate.now().toString()yerine olmalı . Sonra tekrar, golf can .toString()için +""o olur, böylece ()->java.time.LocalDate.now()+""(toplamda 32 bayt ).
Kevin Cruijssen

1

C ++ 14, 143 bayt 139 bayt

#include <cstdio>
#include <time.h>
int main (){time_t t;char D[11];time(&t);strftime(D,sizeof D,"%Y-%m-%d",localtime(&t));printf("%s",D);}

Timtech bana tüm alanlara ihtiyacım olmadığını belirtti.

Sına beni!


Bu alanlardan birkaçını kaldıramaz mısın?
Timtech

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.