Wie lange ist das her?

9

Wie lange ist das her?

Die Regeln

  • Jede Einreichung muss ein vollständiges Programm sein.
  • Das Programm muss die Eingabe als zwei durch Kommas getrennte Daten in das Formular aufnehmen YYYY-MM-DDund die Anzahl der Tage, die seit dem zweiten Datum vergangen sind, an STDOUT drucken, als ob heute das erste Datum wäre (wenn das zweite Datum in der Zukunft liegen würde, geben Sie a aus negative Zahl) plus einen optionalen nachgestellten Zeilenumbruch und sonst nichts. Angenommen, beide Daten befinden sich im Gregorianischen Kalender.
  • Das Programm darf nichts in STDERR schreiben.

    Beachten Sie, dass ein Dolmetscher vorhanden sein muss, damit die Einreichung getestet werden kann.

  • Einsendungen werden in Bytes in einer geeigneten (bereits vorhandenen) Codierung bewertet, normalerweise (aber nicht unbedingt) UTF-8. Einige Sprachen, wie Ordner , sind etwas schwierig zu bewerten - im Zweifelsfall fragen Sie bitte bei Meta .
  • Dies ist , also gewinnt der kürzeste Code

    Beispiele

Eingang:

2015-12-03,2015-12-01

Ausgabe:

2

Eingang:

2015-12-03,2014-12-01

Ausgabe:

367

Eingang:

2015-12-03,2013-12-03

Ausgabe:

730

Das Snippet

Das Stack-Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Rangliste und b) als Liste der Gewinner pro Sprache.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift unter Verwendung der folgenden Markdown-Vorlage:

## Language Name, N bytes

Wo Nist die Größe Ihrer Einreichung? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Wenn Sie dort mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder Sie die Strafen für Dolmetscherflaggen separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

## Perl, 43 + 2 (-p flag) = 45 bytes

Sie können den Sprachnamen auch zu einem Link machen, der dann im Snippet angezeigt wird:

## [><>](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>

ev3commander
quelle
1
Verwandte
GamrCorps
1
Dürfen wir externe Bibliotheken benutzen? Diejenigen, die in einem bestimmten Ökosystem üblich sind, aber nicht Teil der Standardbibliothek sind? (Zum Beispiel verwendet niemand die Datums-APIs des JDK, sondern JodaTime, obwohl es sich technisch gesehen um eine externe Bibliothek handelt.)
Ruslan
Ich gehe davon aus, dass alles UTC verwendet, da in meiner Zeitzone der Unterschied zwischen 2015-11-01T00: 00: 00 und 2015-11-02T00: 00: 00 aufgrund der Sommerzeit nur ~ 0,96 Tage (23 Stunden) betrug. Sie haben nichts über das Runden von Bruchteilen von Tagen erwähnt, daher möchten Sie dies möglicherweise in der Frage klarstellen. (Ich denke, viele Datetime-Bibliotheken verwenden standardmäßig die Ortszeit.)
ThisSuitIsBlackNot
1
Was ist für Schaltjahre der Fall?
TheCoffeeCup
@ TheCoffeeCup sie müssen behandelt werden
ev3commander

Antworten:

1

TeaScript , 24 Bytes

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

Wird verwendet Date.parse, um das Datum zu analysieren, dann die Differenz zu ermitteln und zu teilen.

Probieren Sie es online aus

Erklärung && Ungolfed

((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
Downgoat
quelle
13

Bash + GNU-Dienstprogramme, 37

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

trersetzt das Komma durch eine neue Zeile. dateliest die durch Zeilenumbrüche getrennten Daten und gibt die Anzahl der Sekunden seit der Unix-Epoche aus, die das übergebene Datum darstellt. Diese Zahlen werden dann auf den dcStapel gelegt. Dann ist es eine einfache Sache der Subtraktion und Division durch (24 * 60 * 60). In diesem Fall ist die dcstapelbasierte RPN-Arithmetikauswertung besser als bcoder bash $( ), hauptsächlich weil die Subtraktion vor der Division keine Klammern benötigt.

Eingabe über STDIN:

$ 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
$ 
Digitales Trauma
quelle
4

Julia, 67 Bytes

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)
Alex A.
quelle
Stattdessen -diff(d)[1]können Sie -(d...)ein paar Bytes speichern. Welche Julia-Version benutzt du übrigens? In 1.2 musste ich explizit importieren Datesund ich kann auch nicht einfach Tage in solche Ganzzahlen konvertieren.
Simeon Schaub
Diese Antwort wurde im Jahr 2015 veröffentlicht, also war es wahrscheinlich Julia 0,3 oder 0,4 spätestens.
Alex A.
4

Scala, 166 139 120 116 92 Bytes

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

Verwendungszweck: scala [source filename].scala [date1],[date2]

Hinweis: Die dritte Version (120 Byte) und höher verwendet eine veraltete API. Es kompiliert immer noch und funktioniert gut. Anmerkung 2: Vielen Dank an die Kommentatoren unten für den tollen Rat!

Ruslan
quelle
Da die nachfolgende neue Zeile optional ist, können Sie sie printanstelle von verwenden println.
Marth
Sie können das Object A extends App{...}Teil entfernen und speichern unter a.scalaund ausführen mit scala a.scala 2015-12-3,2015-12-1;)
Martijn
@MartijnR Genius! Vielen Dank!!
Ruslan
3

Ruby, 69 66 65 57 55 Bytes

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

47 Bytes + 8 Bytes für die Befehlszeilenoption. Dank Dane Anderson wurden 2 Bytes gespeichert.

57 Bytes

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

49 Bytes Code + 8 Bytes für Befehlszeilenoption. 8 Bytes mit dem Vorschlag von manatwork gespeichert.

65 Bytes

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

66 Bytes

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

69 Bytes

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

Testen Sie es online

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

Verwendungszweck:

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

=> 730
Vasu Adari
quelle
Drei kleine Zeichen: ','?,, '-'?-, to_i/div .
Manatwork
Die Verwendung einiger Befehlszeilenoptionen kann zu einer weiteren Reduzierung führen: ruby -naF[,-] -e 'p (Time.new(*$F[0,3])-Time.new(*$F[3,3])).div 86400' <<< '2015-10-11,2015-07-11'59 Zeichen, wenn ich sie zähle.
Manatwork
@manatwork Ich bin mir nicht sicher, ob das erlaubt ist.
Vasu Adari
Die Regel ist, dass die minimale Notwendigkeit, den Code zu übergeben (im Fall von Ruby -e), kostenlos ist, alles andere muss in die Zählung einbezogen werden. Es gibt unterschiedliche Meinungen darüber, was genau das alles ist. Einige Mitglieder enthalten beispielsweise das Optionszeichen für Trennzeichen und Anführungszeichen um Parameterwerte. Meiner Ansicht nach sollte nur gezählt werden, was tatsächlich an den Interpreter übergeben wird, zusätzliche Zeichen, die von der Shell-Syntax benötigt werden, nicht. Ich kann mich aber nicht an eine Stimme erinnern, die die Verwendung von Optionen untersagt.
Manatwork
2
fast nicht erwähnenswert, aber Sie können ein Byte rasieren, indem Sie den wiederholten Code in einen Prozess verschieben:t=->l{Time.gm(*$F[l,3])};p (t[0]-t[3]).div 86400
Alexis Andersen
2

Japt , 41 Bytes

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

Bisher ist dies das Beste, was ich bekommen kann, da alle Variablen $und Klammern die Anzahl der Bytes wirklich zerstören.

Probieren Sie es online aus

Erläuterung

             // 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
Downgoat
quelle
2

MATLAB, 41 31 Bytes

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

Die Eingabe muss ein durch Kommas getrenntes Zellenarray sein. datenumkonvertiert die Eingabezelle in ein numerisches 2x1-Array mit dem Zeitstempel. diffnimmt den Unterschied zwischen den beiden.


Alte Lösung, 41 Bytes :

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

Die Eingabe muss eine durch Kommas getrennte Zeichenfolge sein:

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

Die merkwürdigen Programmierweisen. Dies funktioniert aufgrund des impliziten Castings von MATLAB zwischen Datentypen.

Die Ausgabe von strsplit(input(''))ist eine Zelle von Zeichenfolgen. Sie können es nicht difffür eine Zelle verwenden, aber es datenumfunktioniert zum Glück und wandelt die Zelleingabe tatsächlich in ein numerisches 2x1-Array zurück, wodurch diffdie Verwendung möglich wird.

Sie können eine ganze Reihe von Trennzeichen angeben strsplit, aber das Komma ist die Standardeinstellung. Die Standardeingabe für datenumist auch das Format yyyy-mm-dd. Aus diesen Gründen werden viele Spezifikationen wie: Datum (s, 'JJJJ-MM-TT') vermieden, wodurch eine ganze Menge Bytes eingespart werden.

Für den Datensatz wären dies 21 Bytes, wenn ich eine Funktion verwenden könnte:

@(s)-diff(datenum(s))
Stewie Griffin
quelle
1
Wie könnte ich diff vergessen ... Könnte auch einfach meine Einreichung löschen, weil es im Wesentlichen das gleiche ist, aber mit 2 Aufrufen von datenum stattdessen.
Slvrbld
1
Große Auswahl an Eingabeformaten!
Luis Mendo
2

Javascript ES6, 63 Bytes

In Chrom getestet.

alert(((p=Date.parse)((a=prompt().split`,`)[0])-p(a[1]))/864e5)
SuperJedi224
quelle
Komma-getrennt von der Frage
ev3commander
@ ev3commander Ja, das habe ich gerade behoben.
SuperJedi224
2
@ SuperJedi224 Huh. Firefox gibt ein ungültiges Datum an , während Chrom glücklich weitergeht.
Conor O'Brien
5
Ich würde dieses Chrome-spezifisch markieren, da es nur in Chrome zu funktionieren scheint. Ich denke, der konforme Weg wäre Date.parse, das -mit/
Downgoat
1
Bei den meisten Browsern muss das Datum aufgefüllt werden, damit dies 2015-12-03funktioniert, jedoch 2015-12-3nicht (außer in Chrome). Die Frage besagt, dass das Datum im Format vorliegen wird. YYYY-MM-DDWenn die Eingabe also wirklich folgen würde, wäre sie browserübergreifend kompatibel. Die Beispiele scheinen jedoch etwas anderes zu sagen. Wie auch immer, Sie könnten Date.parsestattdessen verwenden new Date, um 2 Bytes zu speichern:alert((p((a=prompt(p=Date.parse).split`,`)[0])-p(a[1]))/864e5)
user81655
2

PHP, 63 64 77 Bytes

Gefunden, dass der klassische Ansatz kürzer ist als der OOP:

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

Liest die durch Kommas getrennte Zeichenfolge von STDIN.


Der einfache OOP-Weg ( 77 Bytes ):

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

Bearbeitungen

  • 13 Bytes durch Verwendung von strtotimeanstelle von gespeichertDateTime .
  • Gespeichert 1 Byte durch Speichern strtotimein einer Variablen. Danke an Blackhole .
insertusernamehere
quelle
-3 Bytes: Verschieben Sie die Zuweisungen zu ihrer ersten Verwendung in Klammern (jeweils -1 Byte) und Sie können <?=stattdessen verwenden echo.
Titus
1

VBA, 69 Bytes

Function x(s)
g=Split(s, ",")
x=CDate(g(0))-CDate(g(1))
End Function
user3819867
quelle
1

psql, 75 Bytes

(74 Zeichen Code + 1 Zeichen Befehlszeilenoption)

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

psqlist das interaktive Terminal von PostgreSQL. Um die "Jede Einreichung muss ein vollständiges Programm sein." In der Regel liest der Code die Eingabe selbst.

Probelauf:

bash-4.3$ psql -tf how-long-was-this.sql <<< '2015-12-3,2013-12-3'
      730
Mann bei der Arbeit
quelle
1

MATL, 5 Bytes

iPYOd

Dies ist das gleiche wie die Antwort von StewieGriffin, außer dass ich das Ergebnis flipdann diffeher verwendet als diffnegiert habe.

Vollständige Erklärung mit entsprechenden Matlab-Funktionen:

i   %// input(''), get input
P   %// flip, flips the array
YO  %// datenum, converts date string into an integer
d   %// diff, finds the difference between dates
David
quelle
2
Hinweis: Obwohl MATL erst am 12. Dezember veröffentlicht wurde, nachdem diese Herausforderung veröffentlicht wurde, habe ich diese Antwort am 9. Dezember mit einem MATL-Compiler vor der Veröffentlichung gefunden, der fast identisch mit dem veröffentlichten Compiler ist. Dieser Code ist jedoch der gleiche.
David
2
Auch dies ist in keiner Weise eine Bestätigung des beliebten tragbaren Apple-Musikgeräts: P
David
1
Ich hätte ofür die datenumFunktion verwenden sollen :-D
Luis Mendo
Das wäre unglaublich gewesen!
David
1
@ ev3commander Die meisten Antworten auf PPCG sind die gleichen wie bei anderen Antworten, insbesondere in Fällen wie diesen, in denen 4 Befehle ausreichen.
David
1

PowerShell v2 +, 50 44 Byte

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

Nimmt Eingabeargument als String, spaltet es auf dem Komma, dann Rohre das Array über einen integrierten Alias datekurz für Get-Dateunsere Strings in .NET DATETIME- Format zu konvertieren. Diese beiden Daten werden dann gleichzeitig in $aund gespeichert $b. Wir verwenden dann einen überladenen Subtraktionsoperator, um den zweiten vom ersten zu subtrahieren und diesen auszugeben .Days.

Golf 6 Bytes dank TessellatingHeckler .

Technisch nicht konkurrierend, da kein Online-Interpreter verfügbar ist, da die FOSS-Implementierung von PowerShell, Pash , auf PowerShell v0.5 basiert. Es wird noch nicht unterstützt -split, geschweige denn die komplexe .NET-Datumsfunktionalität.

AdmBorkBork
quelle
1

Excel, 25 Bytes

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

Excel behandelt die Zeichenfolgen automatisch als Datumsangaben.

Wernisch
quelle
0

Jolf , 33 Bytes

Funktioniert nur in Chrome. Nicht konkurrierend, da die Sprache die Frage nach dem Datum aktualisiert. Ich werde später eine ausführlichere Erklärung hinzufügen.

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

"Erläuterung"

$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
Conor O'Brien
quelle
Wie wäre es, wenn Sie "nicht konkurrierend" in Ihren Header einfügen?
ev3commander
0

MATLAB, 59 Bytes

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

Sehr unkomplizierter Ansatz: Die Eingabe muss als Zeichenfolge aus dem Befehlsfenster erfolgen. Die Eingabezeichenfolge wird dann aufgeteilt und die Anzahl der Tage zwischen den Daten (und nichts anderes) wird aus den Seriendatumnummern berechnet. Ich bin mir ziemlich sicher, dass es eine Möglichkeit gibt, die Notwendigkeit zu vermeiden, datenum zweimal aufzurufen ...

slvrbld
quelle
0

Python 2, 109 113 Bytes

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]
Willem
quelle
0

T-SQL + SQLCMD, 51 Bytes

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

Getestet mit SQL Server 2008R2. Das $ (i) wird durch die Eingabe ersetzt, die als Befehlszeilenargument bereitgestellt wird.

Probelauf:

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

Mathematica, 61 Bytes

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

Grundlegende Datumssubtraktion.

LegionMammal978
quelle
0

Perl, 91 86 + 2 für np-Flags, 88 Bytes

benutze Date :: Calc qw (Delta_Days); ($ a, $ b) = split (/, /); $ _ = Delta_Days (split (/ - /, $ b), split (/ - /, $ a))

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

Beispiel

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

jq, 50 Bytes

(49 Zeichen Code + 1 Zeichen Befehlszeilenoption)

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

Probelauf:

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

Online-Test ( -RURL-Weiterleitung wird nicht unterstützt - Eingabe als Zeichenfolge "2015-12-3,2013-12-3" übergeben.)

Mann bei der Arbeit
quelle
0

Mathematica, 56 Bytes

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

Die meisten (alle?) Datumsfunktionen versuchen, Zeichenfolgeneingaben automatisch in Datumsangaben zu analysieren.

Martin Ender
quelle
0

C # .NET , 148 Bytes

using System;class P{static void Main(string[]a){Console.Write((DateTime.Parse(a[0].Substring(11,10))-DateTime.Parse(a[0].Substring(0,10))).Days);}}

Versuchen Sie es online

canttalkjustcode
quelle