việc này đã kéo dài bao lâu?


9

việc này đã kéo dài bao lâu?

Những quy định

  • Mỗi bài nộp phải là một chương trình đầy đủ.
  • Chương trình phải lấy đầu vào là hai ngày được phân tách bằng dấu phẩy trong biểu mẫu YYYY-MM-DDvà in số ngày đã trôi qua kể từ ngày thứ hai đến STDOUT như thể hôm nay là ngày đầu tiên (nếu ngày thứ hai sẽ trong tương lai, hãy xuất một số âm) cộng với một dòng mới tùy chọn, và không có gì khác. Giả sử cả hai ngày trong lịch Gregorian.
  • Chương trình không được ghi bất cứ điều gì vào STDERR.

    Lưu ý rằng phải có một thông dịch viên để trình có thể được kiểm tra.

  • Đệ trình được ghi bằng byte , trong một mã hóa thích hợp (tồn tại trước), thường (nhưng không nhất thiết) UTF-8. Một số ngôn ngữ, như Thư mục , hơi khó để ghi điểm - nếu nghi ngờ, vui lòng hỏi trên Meta .
  • Đây là , vì vậy đoạn mã ngắn nhất sẽ thắng

    Ví dụ

Đầu vào:

2015-12 / 03,2015-12-01

Đầu ra:

2

Đầu vào:

2015-12 / 03,2014-12-01

Đầu ra:

367

Đầu vào:

2015-12 / 03,2013-12-03

Đầu ra:

730

Đoạn trích

Đoạn trích Stack ở cuối bài đăng này tạo ra danh mục từ các câu trả lời a) dưới dạng bảng xếp hạng và b) dưới dạng danh sách người chiến thắng cho mỗi ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:

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

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

## [><>](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
Chúng tôi có được phép sử dụng các thư viện bên ngoài không? Những người thường gặp trong một hệ sinh thái nhất định nhưng không phải là một phần của lib tiêu chuẩn? (Ví dụ, không ai sử dụng API ngày của JDK mà thay vào đó là JodaTime, mặc dù về mặt kỹ thuật đó là một thư viện bên ngoài).
Ruslan

Tôi giả sử mọi thứ đều sử dụng UTC, vì trong múi giờ của tôi, sự khác biệt giữa 2015-11-01T00: 00: 00 và 2015-11-02T00: 00: 00 chỉ là ~ 0,96 ngày (23 giờ) do tiết kiệm ánh sáng ban ngày. Bạn đã không đề cập bất cứ điều gì về làm tròn số ngày, vì vậy bạn có thể muốn làm rõ điều này trong câu hỏi. (Tôi nghĩ rằng rất nhiều thư viện datetime mặc định sử dụng giờ địa phương.)
ThisSuitIsBlackNot

1
Trường hợp cho năm nhuận là gì?
TheCoffeeCup

@TheCoffeeCup họ phải được xử lý
ev3commander 9/12/2015

Câu trả lời:


1

TeaScript , 24 byte

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

Sử dụng Date.parseđể phân tích ngày, sau đó nhận được sự khác biệt và chia.

Dùng thử trực tuyến

Giải thích && 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

13

Tiện ích Bash + GNU, 37

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

trthay thế dấu phẩy bằng một dòng mới. dateđọc các ngày được phân tách bằng dòng mới và xuất ra số giây kể từ thời kỳ Unix mà ngày truyền qua đại diện. Những con số này sau đó được đưa vào dcngăn xếp. Sau đó, nó là một vấn đề đơn giản của phép trừ và chia cho (24 * 60 * 60). Trong trường hợp này, dcđánh giá số học RPN dựa trên ngăn xếp tốt hơn bchoặc bash $( ), chủ yếu là vì phép trừ trước khi phân chia không cần dấu ngoặc đơn.

Nhập thông qua 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
$ 

4

Julia, 67 byte

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

Ung dung:

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

Thay vì -diff(d)[1]bạn có thể sử dụng -(d...)để lưu một vài byte. Bạn đang sử dụng phiên bản Julia nào? Vào ngày 1.2, tôi đã phải nhập một cách rõ ràng Datesvà tôi cũng không thể chuyển đổi ngày thành số nguyên như thế này.
Simeon Schaub

Câu trả lời này đã được đăng vào năm 2015, vì vậy có lẽ là muộn nhất là 0,3 hoặc 0,4.
Alex A.

4

Scala, 166 139 120 116 92 byte

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

Sử dụng: scala [source filename].scala [date1],[date2]

Lưu ý: Phiên bản thứ ba (120 byte) trở đi sử dụng API không dùng nữa. Nó vẫn biên dịch và hoạt động tốt. Note2: Cảm ơn các bình luận dưới đây cho lời khuyên tuyệt vời!


Vì dòng mới theo dõi là tùy chọn, bạn có thể sử dụng printthay vì println.
Marth

Bạn có thể xóa Object A extends App{...}phần đó và lưu nó dưới dạng a.scalavà chạy nó với scala a.scala 2015-12-3,2015-12-1;)
Martijn

@MartijnR Thiên tài! Cảm ơn!!
Ruslan

3

Ruby, 69 66 65 57 55 byte

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

47 byte + 8 byte cho tùy chọn dòng lệnh. Nhờ Dane Anderson, đã lưu được 2 byte.

57 byte

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

Mã 49 byte + 8 byte cho tùy chọn dòng lệnh. Đã lưu 8 byte với đề xuất của manatwork.

65 byte

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

66 byte

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

69 byte

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

Kiểm tra trực tuyến

Ung dung

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

Sử dụng:

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

=> 730

Ba ký tự nhỏ: ','?,, '-'?-, to_i/div .
manatwork 8/12/2015

Sử dụng một số tùy chọn dòng lệnh có thể giảm thêm: ruby -naF[,-] -e 'p (Time.new(*$F[0,3])-Time.new(*$F[3,3])).div 86400' <<< '2015-10-11,2015-07-11'59 ký tự khi tôi đếm.
manatwork 8/12/2015

@manatwork Không chắc chắn nếu điều đó được cho phép.
Vasu Adari

Quy tắc là sự cần thiết tối thiểu cần thiết để vượt qua mã (trong trường hợp của Ruby -e) là miễn phí, mọi thứ khác phải được tính vào số lượng. Có nhiều ý kiến ​​khác nhau về chính xác những gì khác. Ví dụ, một số thành viên bao gồm ký tự không gian phân cách tùy chọn và dấu ngoặc kép xung quanh các giá trị tham số. Theo quan điểm của tôi, chỉ nên tính những gì thực sự được chuyển cho trình thông dịch, các ký tự bổ sung được yêu cầu bởi cú pháp shell thì không. Nhưng không thể nhớ bất kỳ giọng nói nào được nêu ra để không cho phép sử dụng các tùy chọn.
manatwork 8/12/2015

2
hầu như không có gì đáng nói, nhưng bạn có thể cạo một byte bằng cách di chuyển mã lặp đi lặp lại thành một Proc:t=->l{Time.gm(*$F[l,3])};p (t[0]-t[3]).div 86400
Alexis Andersen

2

Japt , 41 byte

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

Cho đến nay, đây là cách tốt nhất tôi có thể nhận được vì tất cả các biến $và dấu ngoặc đơn thực sự giết chết số byte.

Dùng thử trực tuyến

Giải trình

             // 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 byte

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

Đầu vào phải là một mảng ô được phân tách bằng dấu phẩy. datenumchuyển đổi ô đầu vào thành một mảng số 2x1 với dấu thời gian. diffcó sự khác biệt giữa hai.


Giải pháp cũ, 41 byte :

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

Đầu vào phải là một chuỗi được phân tách bằng dấu phẩy:

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

Những cách lập trình tò mò. Điều này hoạt động vì đúc ngầm của MATLAB giữa các kiểu dữ liệu.

Đầu ra từ strsplit(input(''))là một ô của chuỗi. Bạn không thể sử dụng difftrên một ô, nhưng may mắn thay, nó datenumhoạt động và nó thực sự đưa đầu vào ô trở lại một mảng số 2x1, để diffcó thể sử dụng.

Bạn có thể chỉ định rất nhiều dấu phân cách trong strsplit, nhưng dấu phẩy là mặc định. Ngoài ra, đầu vào mặc định datenumlà trên định dạng yyyy-mm-dd. Vì những lý do đó, rất nhiều thông số kỹ thuật như: datenum (s, 'yyyy-mm-dd') được tránh, tiết kiệm được rất nhiều byte.

Đối với bản ghi, đây sẽ là 21 byte nếu tôi có thể sử dụng hàm:

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

1
Làm thế nào tôi có thể quên đi diff ... Cũng có thể xóa bài đăng của tôi, vì về cơ bản là giống nhau, nhưng với 2 cuộc gọi đến datenum thay thế.
slvrbld

1
Sự lựa chọn tuyệt vời của định dạng đầu vào!
Luis Mendo

2

Javascript ES6, 63 byte

Đã thử nghiệm trong chrome.

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

dấu phẩy được phân tách từ câu hỏi
ev3commander 8/12/2015

@ ev3commander Vâng, tôi chỉ sửa nó.
SuperJedi224

2
@ SuperJedi224 Huh. Firefox cho ngày không hợp lệ , trong khi chrome vui vẻ tiến hành.
Conor O'Brien

5
Tôi đánh dấu Chrome cụ thể này vì nó dường như chỉ hoạt động trong chrome. Tôi nghĩ rằng cách tuân thủ sẽ là sử dụng Date.parsevà thay thế -bằng/
Downgoat

1
Hầu hết các trình duyệt yêu cầu ngày được đệm nên 2015-12-03sẽ hoạt động nhưng 2015-12-3sẽ không (ngoại trừ trong Chrome). Câu hỏi không nói rằng ngày đó sẽ ở định dạng YYYY-MM-DDvì vậy nếu đầu vào thực sự tuân theo thì nó sẽ tương thích với nhiều trình duyệt, tuy nhiên các ví dụ dường như nói khác. Dù sao, bạn có thể sử dụng Date.parsethay vì new Dateđể lưu 2 byte:alert((p((a=prompt(p=Date.parse).split`,`)[0])-p(a[1]))/864e5)
user81655

2

PHP, 63 64 77 byte

Nhận thấy rằng cách tiếp cận cổ điển ngắn hơn phương pháp OOP:

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

Đọc chuỗi được phân tách bằng dấu phẩy từ STDIN.


Cách OOP chuyển tiếp thẳng ( 77 byte ):

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

Chỉnh sửa

  • Đã lưu 13 byte bằng cách sử dụng strtotimethay vì DateTime.
  • Đã lưu 1 byte bằng cách lưu trữ strtotimetrong một biến. Cảm ơn Blackhole .

-3 byte: di chuyển các bài tập sang cách sử dụng đầu tiên của chúng trong ngoặc đơn (mỗi byte -1) và Bạn có thể sử dụng <?=thay vì echo.
Tít


1

psql, 75 byte

(Mã 74 ký tự + 1 ký tự tùy chọn dòng lệnh)

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

psqllà thiết bị đầu cuối tương tác của PostgreSQL. Để tôn trọng các bài viết Mỗi bài phải là một chương trình đầy đủ. quy tắc, mã đọc chính đầu vào.

Chạy mẫu:

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

1

MATL, 5 byte

iPYOd

Điều này giống như câu trả lời của StewieGriffin, ngoại trừ tôi đã sử dụng flipsau đó diffthay vì diffphủ nhận kết quả.

Giải thích đầy đủ, với các chức năng Matlab tương ứng:

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
Lưu ý: Trong khi MATL chỉ được phát hành vào ngày 12 tháng 12, sau khi thử thách này được đăng, tôi đã đưa ra câu trả lời này vào ngày 9 tháng 12 bằng cách sử dụng trình biên dịch MATL trước khi phát hành, gần giống với trình biên dịch được phát hành, mã này cũng giống như vậy.
David

2
Ngoài ra, đây không phải là một sự chứng thực của thiết bị âm nhạc di động nổi tiếng của Apple: P
David

1
Tôi nên sử dụng ocho datenumchức năng :-D
Luis Mendo

Điều đó thật tuyệt vời!
David

1
@ ev3commander hầu hết các câu trả lời trên PPCG đều giống như các câu trả lời khác, đặc biệt là trong các trường hợp như thế này khi có đủ 4 lệnh.
David

1

PowerShell v2 +, 50 44 byte

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

Lấy đối số đầu vào dưới dạng một chuỗi, phân tách nó trên dấu phẩy, sau đó chuyển mảng thông qua một bí danh tích datehợp Get-Dateđể chuyển đổi các chuỗi của chúng tôi thành định dạng datetime .NET. Hai ngày đó sau đó được lưu trữ đồng thời vào $a$b. Sau đó, chúng tôi sử dụng một toán tử trừ-quá tải để trừ cái thứ hai từ cái thứ nhất và xuất ra cái .Daysđó.

Chơi gôn 6 byte nhờ TessellatingHeckler .

Về mặt kỹ thuật không cạnh tranh, vì nó không có sẵn trình thông dịch trực tuyến, vì triển khai FOSS của PowerShell, Pash , xoay quanh PowerShell v0.5. Nó không hỗ trợ -split, chưa nói đến chức năng ngày .NET phức tạp.


1

Excel, 25 byte

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

Excel tự động xử lý các chuỗi dưới dạng ngày.


0

Jolf , 33 byte

Chỉ hoạt động trong Chrome. Không biên dịch, vì ngôn ngữ cập nhật câu hỏi postdate. Tôi sẽ thêm một lời giải thích kỹ lưỡng hơn sau.

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

"Giải trình"

$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

Làm thế nào về bạn đặt "noncompeting" trong tiêu đề của bạn?
ev3commander

0

MATLAB, 59 byte

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

Cách tiếp cận rất đơn giản: đầu vào phải được đưa ra dưới dạng một chuỗi từ cửa sổ lệnh. Chuỗi đầu vào sau đó được phân chia và số ngày giữa các ngày (và không có gì khác) được tính từ các số ngày nối tiếp. Tôi khá chắc chắn rằng có một cách để tránh sự cần thiết phải gọi datenum hai lần mặc dù ...


0

Python 2, 109 113 byte

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 byte

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

Đã thử nghiệm với SQL Server 2008R2. $ (I) được thay thế bằng đầu vào được cung cấp dưới dạng đối số dòng lệnh.

Chạy mẫu:

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

0

Toán học, 61 byte

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

Phép trừ ngày cơ bản.


0

Perl, 91 86 + 2 cho cờ np, 88 byte

sử dụng Ngày :: Calc qw (Delta_Days); ($ a, $ b) = split (/, /); $ _ = Delta_Days (split (/ - /, $ b), split (/ - /, $ a))

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

Thí dụ

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

0

jq, 50 byte

(Mã 49 ký tự + 1 ký tự tùy chọn dòng lệnh)

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

Chạy mẫu:

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

Kiểm tra trực tuyến (Chuyển -Rqua URL không được hỗ trợ - vì vậy, đầu vào được chuyển dưới dạng chuỗi "2015-12-3,2013-12-3".)


0

Toán học, 56 byte

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

Hầu hết các hàm ngày (tất cả?) Sẽ cố gắng phân tích chuỗi đầu vào thành ngày tự động.



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.