यह कितनी देर पहले था?


9

यह कितनी देर पहले था?

नियम

  • प्रत्येक प्रस्तुत एक पूर्ण कार्यक्रम होना चाहिए।
  • कार्यक्रम को फॉर्म में दो अल्पविराम से अलग तारीखों के रूप में इनपुट लेना चाहिए YYYY-MM-DD, और उन दिनों की संख्या को प्रिंट करना चाहिए जो दूसरी तारीख से एसटीडीयूएसटी के रूप में आए हैं जैसे कि आज पहली तारीख थी (यदि दूसरी तारीख भविष्य में होगी, तो आउटपुट ए नकारात्मक संख्या) प्लस एक वैकल्पिक अनुगामी न्यूलाइन, और कुछ नहीं। मान लें कि दोनों तिथियां ग्रेगोरियन कैलेंडर में हैं।
  • कार्यक्रम को STDERR को कुछ भी नहीं लिखना चाहिए।

    ध्यान दें कि एक दुभाषिया होना चाहिए ताकि सबमिशन का परीक्षण किया जा सके।

  • प्रस्तुतियाँ बाइट्स में , एक उपयुक्त (पहले से मौजूद) एन्कोडिंग में, आमतौर पर (लेकिन जरूरी नहीं) UTF-8 में स्कोर की जाती हैं । कुछ भाषाएं, जैसे कि फ़ोल्डर , स्कोर करने के लिए थोड़ा मुश्किल हैं - यदि संदेह है, तो कृपया मेटा पर पूछें ।
  • ये है , इसलिए सबसे छोटा कोड जीतता है

    उदाहरण

इनपुट:

2015-12-03,2015-12-01

आउटपुट:

2

इनपुट:

2015-12-03,2014-12-01

आउटपुट:

367

इनपुट:

2015-12-03,2013-12-03

आउटपुट:

730

स्निपेट

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) ए लीडरबोर्ड के रूप में और बी) प्रति भाषा विजेताओं की सूची के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## 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

var QUESTION_ID=65989,OVERRIDE_USER=46167;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>



1
क्या हमें बाहरी पुस्तकालयों का उपयोग करने की अनुमति है? एक निश्चित पारिस्थितिकी तंत्र में आम हैं, लेकिन मानक काम का हिस्सा नहीं हैं? (उदाहरण के लिए, कोई भी JDK की तारीख एपीआई का उपयोग नहीं करता है, लेकिन इसके बजाय JodaTime, भले ही यह तकनीकी रूप से एक बाहरी पुस्तकालय है)।
रुस्लान

मुझे लगता है कि सब कुछ यूटीसी का उपयोग करता है, क्योंकि मेरे टाइमज़ोन में 2015-11-01T00: 00: 00 और 2015-11-02T00: 00: 00 के बीच का अंतर केवल दिन की बचत के कारण ~ 0.96 दिन (23 घंटे) था। आपने भिन्नात्मक दिनों को गोल करने के बारे में कुछ भी उल्लेख नहीं किया है, इसलिए आप इस प्रश्न में स्पष्ट करना चाह सकते हैं। (मुझे लगता है कि स्थानीय समय का उपयोग करने के लिए बहुत सारे
डेटाइम

1
लीप वर्षों के लिए मामला क्या है?
द कॉफ़ी कॉप

@ कॉफ़ी कॉप उन्हें संभालना होगा
ev3commander

जवाबों:


1

टीस्क्रिप्ट , 24 बाइट्स

((a=D.parse)×-a(y©/864e5

Date.parseतारीख को पार्स करने के लिए उपयोग करता है, फिर अंतर प्राप्त करता है और विभाजित करता है।

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

स्पष्टीकरण और & nbsp;

((a=D.parse)(x)-a(y))/864e5

               // Implicit: x is first date
               // y is second date
(
 (a=D.parse)   // Assign Date.parse to 'a'
 (x)           // Run Date.parse with first date
 -a(y)         // Subtract Date.parse run with second date
)/864e5        // Divide by 86,400,000

13

बैश + जीएनयू उपयोगिताओं, 37

tr , \\n|date -f- +%s|dc -e??-86400/p

trअल्पविराम को एक नई रेखा के साथ बदल देता है। dateपढ़ी गई अलग-अलग तारीखों को पढ़ता है और यूनिक्स की अवधि के बाद से सेकंड की संख्या को आउटपुट करता है जो पारित तिथि का प्रतिनिधित्व करता है। इन नंबरों को तब dcस्टैक पर रखा जाता है । फिर इसके घटाव का एक साधारण मामला है और (24 * 60 * 60) से विभाजित करते हैं। इस मामले में, dcस्टैक-आधारित RPN अंकगणितीय मूल्यांकन bcबैश या से बेहतर है$( ) , , क्योंकि सब-एक्शन से पहले डिवीजन को कोष्ठक की आवश्यकता नहीं है।

इनपुट के माध्यम से:

$ echo 2015-12-3,2015-12-1 | ./longago.sh
2
$ echo 2015-12-3,2014-12-1 | ./longago.sh
367
$ echo 2015-12-3,2013-12-3 | ./longago.sh
730
$ 

4

जूलिया, 67 बाइट्स

print(Int(-diff(map(i->Date(i,"y-m-d"),split(readline(),",")))[1]))

Ungolfed:

# Read a line from STDIN
r = readline()

# Split it into two character dates
s = split(r, ",")

# Convert each to a Date object
d = map(i -> Date(i, "y-m-d"), s)

# Compute the difference in dates (first-second)
f = diff(d)[1]

# Convert the Base.Date.Day object to an integer
# Negate to get second-first
i = Int(-f)

# Print to STDOUT
print(i)

-diff(d)[1]आप के बजाय -(d...)बाइट्स के एक जोड़े को बचाने के लिए उपयोग कर सकते हैं । आप किस तरह से जूलिया संस्करण का उपयोग कर रहे हैं? 1.2 पर, मुझे स्पष्ट रूप से आयात करना पड़ा Datesऔर मैं भी इस तरह पूर्णांक के दिनों को परिवर्तित नहीं कर सकता।
शिमोन शाउब

यह उत्तर 2015 में पोस्ट किया गया था, इसलिए यह शायद जूलिया 0.3 या 0.4 नवीनतम पर था।
एलेक्स ए।

4

स्काला, 166 139 120 116 92 बाइट्स

print(args(0).replace('-','/').split(",").map(java.util.Date.parse(_)/86400000).reduce(_-_))

उपयोग: scala [source filename].scala [date1],[date2]

नोट: तीसरा संस्करण (120 बाइट्स) और एक अपग्रेड किए गए एपीआई का उपयोग करता है। यह अभी भी संकलित करता है और ठीक काम करता है। Note2: महान सलाह के लिए नीचे टिप्पणीकारों के लिए धन्यवाद!


चूँकि अनुगामी नई पंक्ति वैकल्पिक है, जिसके printबदले आप उपयोग कर सकते हैं println
मार्श

आप Object A extends App{...}भाग को हटा सकते हैं और इसे बचा सकते हैं a.scalaऔर इसे चला सकते हैं scala a.scala 2015-12-3,2015-12-1;)
मार्टिज़न

@MartijnR जीनियस! धन्यवाद!!
रुस्लान

3

रूबी, 69 66 65 57 55 बाइट्स

a=->l{Time.gm *$F[l,3]};p (a[0]-a[3]).div 86400

कमांड लाइन विकल्प के लिए 47 बाइट्स + 8 बाइट्स। डेन एंडरसन के लिए धन्यवाद, 2 बाइट्स बचाए गए।

57 बाइट्स

p (Time.gm(*$F[0,3])-Time.gm(*$F[3,3])).div 86400

कमांड लाइन विकल्प के लिए 49 बाइट्स कोड + 8 बाइट्स। मैनटवर्क के सुझाव के साथ 8 बाइट्स बचाए।

65 बाइट्स

a,b=gets.split(?,).map{|i|Time.gm *i.split(?-)};p (a-b).div 86400

66 बाइट्स

a,b=gets.split(?,).map{|i|Time.new *i.split(?-)};p (a-b).div 86400

69 बाइट्स

a,b=gets.split(',').map{|i|Time.new *i.split('-')};p (a-b).to_i/86400

इसे ऑनलाइन टेस्ट करें

Ungolfed

a = -> l {
  Time.gm *$F[l,3]       # Anonymous method to parse time
}
p (a[0]-a[3]).div 86400  # Subtracts two times and divides by 24*60*60

उपयोग:

ruby -naF[,-] -e 'a=->l{Time.gm *$F[l,3]};p (a[0]-a[3]).div 86400' <<< '2015-12-3,2013-12-3'

=> 730

तीन छोटे वर्ण: ','?,, '-'?-, to_i/div
मैनटवर्क

कुछ कमांड लाइन विकल्पों का उपयोग करके इसे और अधिक कम किया जा सकता है: ruby -naF[,-] -e 'p (Time.new(*$F[0,3])-Time.new(*$F[3,3])).div 86400' <<< '2015-10-11,2015-07-11'59 वर्णों के रूप में मैं इसे गिनता हूं।
मैनेटवर्क

@manatwork सुनिश्चित नहीं है कि इसकी अनुमति है।
वासु अडारी

नियम यह है कि कोड को पास करने के लिए आवश्यक न्यूनतम आवश्यकता (रूबी के मामले में -e) नि: शुल्क है, बाकी सब को गिनती में शामिल करना होगा। इस बात पर अलग-अलग राय है कि वास्तव में यह सब कुछ क्या है। उदाहरण के लिए कुछ सदस्यों में पैरामीटर विभाजक के आसपास विकल्प विभाजक स्थान चरित्र और उद्धरण शामिल हैं। मेरे विचार में केवल यह गिना जाना चाहिए कि वास्तव में दुभाषिया के पास क्या जाता है, शेल सिंटैक्स द्वारा आवश्यक अतिरिक्त वर्ण नहीं। लेकिन विकल्पों के उपयोग को रोकने के लिए उठाई गई किसी भी आवाज को याद नहीं रख सकते।
मैनेटवर्क

2
लगभग उल्लेख के लायक नहीं है, लेकिन आप बार-बार कोड को एक खरीद में स्थानांतरित करके एक बाइट दाढ़ी कर सकते हैं:t=->l{Time.gm(*$F[l,3])};p (t[0]-t[3]).div 86400
एलेक्सिस एंडरसन

2

जाप , 41 बाइट्स

A=K$.parse)(($B=Uq',  g0)-$A($Bg1))/864e5

अब तक यह सबसे अच्छा है मैं इसे प्राप्त कर सकता हूं क्योंकि सभी चर $और कोष्ठक वास्तव में बाइट की गिनती को मारते हैं।

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

व्याख्या

             // Implicit: U is set to input
A=K$.parse)  // Set variable A to date parsing function
(($B=Uq',    // Set B to input split by ,
  g0)        // Get the first date and parse
-            // Subtract...
$A(          // Parse this date...
   $Bg1      // Get's second date
))/864e5     // Divides by 86,400,000

2

MATLAB, 41 31 बाइट्स

disp(-diff(datenum(input(''))))
{'2015-12-03', '2014-12-22'}
   346  

इनपुट अल्पविराम द्वारा अलग किया गया सेल सरणी होना चाहिए। datenumसमय की मुहर के साथ इनपुट सेल को 2x1 संख्यात्मक सरणी में परिवर्तित करता है। diffदोनों के बीच अंतर करता है।


पुराना समाधान, 41 बाइट्स :

disp(-diff(datenum(strsplit(input('')))))

इनपुट अल्पविराम से अलग होना चाहिए:

disp(-diff(datenum(strsplit(input('')))))
'2015-12-03, 2014-12-22'
   346

प्रोग्रामिंग के उत्सुक तरीके। यह MATLAB के डेटाटाइप्स के बीच अंतर्निहित कास्टिंग के कारण काम करता है।

से आउटपुट strsplit(input(''))स्ट्रिंग्स का एक सेल है। आप diffसेल पर उपयोग नहीं कर सकते , लेकिन सौभाग्य से, datenumकाम करता है, और यह वास्तव में सेल इनपुट को 2x1 संख्यात्मक सरणी में वापस बनाता है, जिससेdiff उपयोग संभव है।

आप इसमें बहुत सारे परिसीमन निर्दिष्ट कर सकते हैं strsplit, लेकिन अल्पविराम डिफ़ॉल्ट है। साथ ही, डिफ़ॉल्ट इनपुट datenumप्रारूप पर है yyyy-mm-dd। उन कारणों के लिए, बहुत सारे विनिर्देशों जैसे: डेटेनम (s, 'yyyy-mm-dd') से बचा जाता है, जिससे बहुत सारे बाइट्स बच जाते हैं।

यदि मैं किसी फ़ंक्शन का उपयोग कर सकता हूं, तो रिकॉर्ड के लिए, यह 21 बाइट्स होगा:

@(s)-diff(datenum(s))

1
मैं अंतर के बारे में कैसे भूल सकता हूं ... शायद मेरे प्रस्तुत को हटा दें, क्योंकि यह अनिवार्य रूप से समान है, लेकिन इसके बजाय 2 कॉल के साथ डेटेनम।
slvrbld

1
इनपुट प्रारूप का शानदार विकल्प!
लुइस मेंडू

2

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

क्रोम में परीक्षण किया गया।

alert(((p=Date.parse)((a=prompt().split`,`)[0])-p(a[1]))/864e5)

अल्पविराम प्रश्न से अलग
ev3commander

@ ev3commander हाँ, मैंने अभी तय किया है।
SuperJedi224

2
@ SuperJedi224 हुह। फ़ायरफ़ॉक्स अमान्य दिनांक देता है , जबकि क्रोम खुशी से आगे बढ़ता है।
कॉनर ओ'ब्रायन

5
मैं इस क्रोम-विशिष्ट को चिह्नित करूंगा क्योंकि यह केवल क्रोम में काम करता है। मुझे लगता है कि आज्ञाकारी तरीका का उपयोग करना होगा Date.parseऔर इसके -साथ प्रतिस्थापित करना होगा/
डाउनगोट

1
अधिकांश ब्राउज़रों को तिथि को गद्देदार बनाने की आवश्यकता होती है, इसलिए 2015-12-03काम 2015-12-3करेंगे (क्रोम को छोड़कर) नहीं करेंगे। सवाल यह कहता है कि तारीख प्रारूप में होगी, YYYY-MM-DDइसलिए यदि इनपुट ने वास्तव में पालन किया है कि यह क्रॉस-ब्राउज़र संगत होगा, हालांकि उदाहरण अन्यथा कहने लगते हैं। वैसे भी, आप 2 बाइट बचाने Date.parseके new Dateलिए उपयोग कर सकते हैं :alert((p((a=prompt(p=Date.parse).split`,`)[0])-p(a[1]))/864e5)
user81655

2

PHP, 63 64 77 बाइट्स

पाया कि क्लासिक दृष्टिकोण OOP से छोटा है:

$x=fgetcsv(STDIN);$s=strtotime;echo($s($x[0])-$s($x[1]))/86400;

कॉमा से अलग स्ट्रिंग को पढ़ता है STDIN


सीधे आगे OOP रास्ता ( 77 बाइट्स ):

$x=fgetcsv(STDIN);echo(new DateTime($x[0]))->diff(new DateTime($x[1]))->days;

संपादित करता

  • के बजाय का उपयोग करके 13 बाइट्स बचाता है ।strtotimeDateTime
  • एक चर में संग्रहीत करके 1 बाइट को बचायाstrtotimeब्लैकहोल को धन्यवाद ।

-3 बाइट्स: कोष्ठक (-1 बाइट प्रत्येक) में अपने पहले उपयोग के लिए असाइनमेंट ले जाएँ और आप <?=इसके बजाय उपयोग कर सकते हैं echo
टाइटस


1

psql, 75 बाइट्स

(74 वर्ण कोड + 1 वर्ण कमांड लाइन विकल्प)

\prompt i
select split_part(:'i',',',1)::date-split_part(:'i',',',2)::date

psqlPostgreSQL का इंटरैक्टिव टर्मिनल है। सम्मान करने के लिए "प्रत्येक प्रस्तुत एक पूर्ण कार्यक्रम होना चाहिए।" नियम, कोड स्वयं इनपुट पढ़ता है।

नमूना रन:

bash-4.3$ psql -tf how-long-was-this.sql <<< '2015-12-3,2013-12-3'
      730

1

MATL, 5 बाइट्स

iPYOd

यह, StewieGriffin के जवाब के रूप में ही है, सिवाय इसके कि मैं प्रयोग किया जाता है flipतो diffबजाय diffतो परिणाम negating।

पूर्ण विवरण, संबंधित मटलब कार्यों के साथ:

i   %// input(''), get input
P   %// flip, flips the array
YO  %// datenum, converts date string into an integer
d   %// diff, finds the difference between dates

2
नोट: जब भी MATL केवल 12 दिसंबर को जारी किया गया था, इस चुनौती को पोस्ट किए जाने के बाद, मैं 9 दिसंबर को इस उत्तर के साथ आया , जो एक पूर्व-रिलीज़ MATL संकलक का उपयोग कर रहा था , जो रिलीज़ किए गए संकलक के लगभग समान है, यह कोड समान है।
डेविड

2
इसके अलावा, यह किसी भी तरह से लोकप्रिय Apple पोर्टेबल म्यूजिक डिवाइस का समर्थन नहीं है: P
David

1
मुझे फंक्शन के oलिए इस्तेमाल करना चाहिए datenum:-D
लुइस मेंडो

यह अद्भुत होता!
डेविड

1
PPCG पर @ ev3commander अधिकांश उत्तर अन्य उत्तरों के समान हैं, विशेष रूप से इस तरह के मामलों में जहां 4 कमांड पर्याप्त हैं।
डेविड

1

PowerShell v2 +, 50 44 बाइट्स

$a,$b=$args-split','|%{date $_};($a-$b).Days

इनपुट तर्क को एक स्ट्रिंग के रूप में लेता है, इसे अल्पविराम पर विभाजित करता है, फिर हमारे स्ट्रिंग्स को .NET डेटाइम फॉर्मेट में बदलने के dateलिए एक अंतर्निहित उपनाम के माध्यम से सरणी को पाइप Get-Dateकरता है। उन दो तिथियों को एक साथ $aऔर में संग्रहीत किया जाता है $b। फिर हम पहले से दूसरे को घटाने के लिए एक अतिभारित-घटाव-ऑपरेटर का उपयोग करते हैं, और .Daysउसके बाद आउटपुट देते हैं।

TessellatingHeckler के लिए 6 बाइट्स के लिए धन्यवाद ।

तकनीकी रूप से गैर-प्रतिस्पर्धात्मक, क्योंकि इसमें ऑनलाइन इंटरप्रिटर उपलब्ध नहीं है, क्योंकि पावरशेल , पॉश का FOSS कार्यान्वयन , PowerShell v0.5 के आसपास है। यह -splitअभी तक समर्थन नहीं करता है, अकेले जटिल .NET दिनांक कार्यक्षमता को दें।


1

एक्सेल, 25 बाइट्स

=LEFT(A1,10)-RIGHT(A1,10)

एक्सेल स्वचालित रूप से तार को तारीखों के रूप में संभालता है।


0

जोल्फ , 33 बाइट्स

केवल क्रोम में काम करता है। नॉनकोमपेटिंग, चूंकि भाषा अपडेट प्रश्न को स्थगित कर देती है। मैं बाद में अधिक गहन स्पष्टीकरण जोड़ूंगा।

$S=$viGi', mDN~DH r}/m4SmeP"864"5

"स्पष्टीकरण"

$S=$viGi', mDN~DH r}
$S=$                 sets S equal to
    viGi',           take string input and reassign it to the comma-split input
           mD      } map with this function 
             N~DH r  return the time of the date of H (element)

/m4SmeP"864"5
/             divide
 m4S           subtraction applied to S (S[0] - S[1])
    meP"864"5  and 864 * 10 ^ 5 (thanks to Super Jedi for his nice constant)
              implicit output

कैसे के बारे में आप अपने हेडर में "noncompeting" डाल दिया?
ev3commander

0

MATLAB, 59 बाइट्स

s=strsplit(input(''),',');disp(datenum(s{1})-datenum(s{2}))

बहुत सरल दृष्टिकोण: इनपुट को कमांड विंडो से स्ट्रिंग के रूप में दिया जाना है। इनपुट स्ट्रिंग को तब विभाजित किया जाता है और तारीखों के बीच दिनों की संख्या (और कुछ नहीं) की गणना सीरियल दिनांक संख्याओं से की जाती है। मुझे पूरा यकीन है कि डेटेनम को दो बार कॉल करने की आवश्यकता से बचने का एक तरीका है ...


0

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

import datetime as d 
j=[d.date(*[int(k) for k in g.split('-')]) for g in raw_input().split(',')]
print j[0]-j[1]

0

T-SQL + SQLCMD, 51 बाइट्स

PRINT DATEDIFF(D,RIGHT('$(i)',10),LEFT('$(i)',10))

SQL Server 2008R2 के साथ परीक्षण किया गया। $ (I) को कमांड लाइन तर्क के रूप में प्रदान किए गए इनपुट से बदल दिया जाता है।

नमूना रन:

sqlcmd -i script.sql -v i="2015-12-08,2016-01-01"
-24

0

गणितज्ञ, 61 बाइट्स

Print@First[#-#2&@@DateObject/@InputString[]~StringSplit~","]

मूल तिथि घटाव।


0

पर्ल, 91 86 + 2 एनपी झंडे के लिए, 88 बाइट्स

उपयोग तिथि :: Calc qw (Delta_Days); ($ a, $ b) = विभाजन (/, /), $ _ = Delta_Days (विभाजन (/ - /, $ b), विभाजन (/ - /, $ a))

use Date::Parse;$_=str2time((split(/,/,$_))[0])-str2time((split(/,/,$_))[1]);$_/=86400

उदाहरण

$ echo 2015-12-3,2015-12-1 | perl -npe 'use Date::Parse;$_=str2time((split(/,/,$_))[0])-str2time((split(/,/,$_))[1]);$_/=86400'
2

0

jq, 50 बाइट्स

(49 वर्ण कोड + 1 वर्ण कमांड लाइन विकल्प)

./","|map(.+"T0:0:0Z"|fromdate)|(.[0]-.[1])/86400

नमूना रन:

bash-4.3$ ~/bin/jq -R './","|map(.+"T0:0:0Z"|fromdate)|(.[0]-.[1])/86400' <<< '2015-12-3,2013-12-3'
730

ऑन-लाइन परीक्षण ( -RURL से गुजरना समर्थित नहीं है - इसलिए इनपुट को स्ट्रिंग "2015-12-3,2013-12-3" के रूप में पारित किया गया है।)


0

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

Print@#&@@-DateDifference@@InputString[]~StringSplit~","

अधिकांश (सभी?) दिनांक फ़ंक्शन स्वचालित रूप से दिनांक में स्ट्रिंग इनपुट पार्स करने का प्रयास करेंगे।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.