উজানেটের সময়ে কী তারিখ?


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

আরও আকর্ষণীয় উত্তরের স্বার্থে, এই উদ্দেশ্যে (যেমন ইউএন * এক্স sdateকমান্ড) জন্য ডিজাইন করা একটি বিল্ট-ইন ফাংশনটির ব্যবহার অনুমোদিত নয়। এটি এবং মান ব্যতিক্রমগুলি বাদ দিলে এটি গল্ফ, তাই সংক্ষিপ্ত উত্তরটি জিতে যায়।


1
আপনার মানে আমি ডেটডিফারেন্সটি ব্যবহার করতে পারি না যাতে এখানকার লোকেরা গণিতের বিল্টিনগুলিতে মন্তব্য করতে পারে ???
J42161217

@ জেনি_ম্যাথি, এই তারিখের ডিফারেন্স ? আমার ধারণা আপনি এটি ব্যবহার করতে পারবেন, হ্যাঁ, কেন না?
এমএস 210

উত্তর:


2

জাভাস্ক্রিপ্ট (ES6), 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>

@ মিঃ এক্সকোডার এর অ্যালগরিদমের ভিত্তিতে।


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 বাইটস অফিফিক্যালাম -২২
বাইটস ধন্যবাদ জোনাথন অ্যালানকে



1
বা আরও ভাল, -59 বাইট।
notjagan


1
-8644+1হতে পারে -8643..
অফিসিয়ালিম

1
@ মিঃ এক্সকোডার দরকার হয় তা 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}

ইউজার 202729 -তে বাইটস থিয়েক্স


আপনি কি {1993,9,1}একটি দিনের মধ্যে সময় চিহ্নটি আবার স্থানান্তরিত করতে বিবেচনা করবেন , যাতে +12 বাইট সংরক্ষণ করে?
ব্যবহারকারী 202729

ধন্যবাদ। আমার পরের বার আরও নম্র হওয়ার চেষ্টা করা উচিত। এবং আমি জানি না {1993,9,0}অনুমোদিত হয়।
ব্যবহারকারী 202729

1

পার্ল 5 , 102 + 16 (-মটাইম :: লোকাল-এফ-) = 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" হিসাবে তারিখটি নেয়

আমি মনে করি আমি কমান্ড লাইন অপশনগুলিতে সঠিক গণনা করেছি। আমি নিশ্চিত আমি না করলে কেউ আমাকে সংশোধন করবে will


1

সি # (.নেট কোর) , 107 বাইট

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

এটি অনলাইন চেষ্টা করুন!

এম / ডি / ওয়াইওয়াইওয়াই হিসাবে তারিখ নেয় (কেবলমাত্র 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.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.