यूज़नेट समय में क्या तारीख है?


9

सितंबर 1993 को यूज़नेट पर सितंबर के रूप में जाना जाता है जो कभी समाप्त नहीं हुआ। इस प्रकार, उदाहरण के लिए, जिस दिन यह प्रश्न पोस्ट किया जा रहा है वह शनिवार, सितंबर 8740, 1993 है।

आपके प्रोग्राम या फ़ंक्शन को किसी भी ग्रेगोरियन तिथि (सकारात्मक वर्ष के साथ) को इनपुट के रूप में लेना चाहिए और उसी तारीख को आउटपुट के रूप में वापस करना चाहिए यदि यह सितंबर 1993 से पहले है या उसके बाद सितंबर 1993 के कैलेंडर की तारीख।

आप YYYY-MM-DD, YYYY / MM / DD, MM / DD / YYYY, DD / MM / YYYY, D-Monthnameabbr-YYYY या कोई भी अन्य लोकप्रिय प्रारूप वर्ष की संपूर्णता का उपयोग कर सकते हैं (जैसा कि विरोध किया जाता है) वर्ष मोडुलो 100)। आपको अपने चयन के लिए केवल एक प्रारूप को स्वीकार करने की आवश्यकता है। आउटपुट स्वरूप को इनपुट प्रारूप से मेल खाना चाहिए।

नमूना इनपुट → आउटपुट:

  • रविवार, 6 अगस्त 2017 → रविवार, 8741 सितंबर 1993
  • मंगलवार, 28 जनवरी 1986 → मंगलवार, 28 जनवरी 1986

या:

  • 2017-08-06 → 1993-09-8741
  • 1986-01-28 → 1986-01-28

अधिक दिलचस्प जवाबों के हित में, इस उद्देश्य के लिए डिज़ाइन किए गए एक अंतर्निहित फ़ंक्शन का उपयोग (जैसे कि UN * X sdateकमांड) अस्वीकृत है। इसके अलावा और मानक अपवादों के लिए , यह गोल्फ है, इसलिए सबसे कम उत्तर जीतता है।


1
आपका मतलब है कि मैं DateDifference का उपयोग नहीं कर सकता ताकि यहाँ के लोग Mathematica की बिल्डिंग्स पर टिप्पणी कर सकें ???
J42161217

@ जेनी_माथी, यह डेटडिफरेंस ? मुझे लगता है कि आप इसका उपयोग कर सकते हैं, हाँ, क्यों नहीं?
msh210

जवाबों:


2

जावास्क्रिप्ट (ईएस 6), 48 बाइट्स

f=
s=>(d=new Date(s)/864e5-8643|0)>9?'1993-09-'+d:s
<input size=10 oninput=o.textContent=/\d{4}(-\d\d){2}/.test(this.value)?f(this.value):``><pre id=o>

@ Mr.Xcoder के एल्गोरिथ्म पर आधारित।


3

पायथन 3 , 109 बाइट्स

from datetime import*
i=input()
z=date(*map(int,i.split())).toordinal()-727806
print([i,'1993 09 %d'%z][z>9])

इसे ऑनलाइन आज़माएं!

-59 बाइट्स नॉटजैगन
-3 बाइट्स के लिए धन्यवाद, मिस्टर एक्सकोडर
-2 बाइट्स के लिए धन्यवाद, आधिकारिकता
-12 बाइट्स के लिए धन्यवाद, जोनाथन एलन को धन्यवाद



1
या बेहतर अभी तक, -59 बाइट्स।
नॉटजैगन


1
-8644+1हो सकता है -8643..
आधिकारिक

1
@ Mr.Xcoder की जरूरत है z>9अन्यथा आप दिन पर अग्रणी शून्य खो देते हैं।
नील

2

मैथेमेटिका, 55 बाइट्स

If[(s=#&@@{1993,9}~DateDifference~#)>0,{1993,9,s+1},#]&

आई / ओ

{2017, 8, 6} -> {1993, 9, 8741}
{1986, 1, 28} -> {1986, 1, 28}

-6 बाइट्स thanx to user202729


क्या आप समय के निशान {1993,9,1}को एक दिन में वापस शिफ्ट करने पर विचार करेंगे, ताकि +12 बाइट्स बचाए जा सकें ?
user202729

धन्यवाद। मुझे अगली बार अधिक विनम्र बनने की कोशिश करनी चाहिए। और मुझे पता भी नहीं है कि {1993,9,0}अनुमति नहीं है।
15:20 बजे user202729

1

पर्ल 5 , 102 + 16 (-MTime :: लोकल -F-) = 118 बाइट्स

$,='-';say @F=($t=timelocal(0,0,0,$F[2],$F[1]-1,$F[0]-1900)-749433599)>0?(1993,'09',31+int$t/86400):@F

इसे ऑनलाइन आज़माएं!

दिनांक को "YYYY-MM-DD" के रूप में लेता है

मुझे लगता है कि मैंने कमांड लाइन विकल्पों पर सही गणना की। मुझे यकीन है कि कोई मुझे ठीक करेगा अगर मैंने नहीं किया।


1

सी # (.NET कोर) , 107 बाइट्स

s=>{var d=(System.DateTime.Parse(s)-new System.DateTime(1993,8,31)).TotalDays;return d<1?s:"9/"+d+"/1993";}

इसे ऑनलाइन आज़माएं!

M / D / YYYY के रूप में दिनांक लेता है (केवल 1 अंक के साथ लिखे गए 10 से नीचे की संख्या)। दिल से एपीआई का उपयोग करके मेरे मोबाइल फोन से लिखा गया है।


1

गैया , 78 बाइट्स

ℍZ¤∨4Ė
:'//d¦[1993₉31];>\{\‡:(…1993>↑¦365+¦¤ṇ↑∂K∂k,=;((<¤)-243]_ḥΣ“1993/09/”¤+}?

इसे ऑनलाइन आज़माएं!

व्याख्या

सबसे पहले, हमारे पास एक सहायक कार्य है जो यह निर्धारित करता है कि एक वर्ष एक लीप वर्ष है।

ℍ       100
 Z      Divmod year by 100, pushing the first 2 digits, then the second 2 digits
  ¤     Swap
   ∨    Logical OR, gives the left-most non-zero number
    4Ė  Check for divisibility by 4

मुख्य कार्य बाकी काम करता है:

:              Push two copies of the input.
'//            Split the top on on slashes.
d¦             Parse each section as a number.
[1993₉31]      Push the list [1993 9 31].
;>             Copy the date and check if its less than that.
\              If it is, delete the list and leave the input string on top.
{              Else:
 :(             Copy the date and get the year.
 …1993>         Get the range from 1993 to year-1.
 ↑¦365+¦        Map each to 365+(whether it's a leap year).
 ¤              Swap, bring the date back to the top.
 ṇ↑             Pull out the year and check if it's a leap year.
 ∂K∂k,          Push the pair of lists [[days in months in a leap year] [days in months]]
 =              Index the result of checking if the year is a leap year into the pair.
 ;((<           Get the first (month number - 1) elements.
 ¤              Swap, bring date back to the top.
 )              Get the day.
 -243           Push -243 (243 is the number of days between Jan 1 1993 and Sept 1 1993).
 ]              Wrap everything in a list.
 _              Flatten the list.
 ḥ              Remove the first element (the input string).
 Σ              Sum it.
 “1993/09/”¤+   Append the resulting number to "1993/09/".
}?             (end if)
               Implicitly display whatever is on top of the stack.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.