Quantcast
Channel: rana_kualuの記事 - Qiita
Viewing all articles
Browse latest Browse all 331

言語別『来月の今日』一覧

$
0
0

3月31日に「来月の今日」と聞かれたらどちらと答えますか?

・4月30日
・5月1日

文字どおりに取ると『4月31日』であり即ち『5月1日』になります。
しかし一般人であれば『4月30日』をイメージすることが多いでしょう。

これはどちらが正しいというものでもなく、定義が曖昧なので解釈の隙があるというだけですね。
そんなわけでプログラミング言語においても、どちらを取るかは言語によってバラバラです。

以下はざっくりなんとなくの範囲で調べたものです。
言語機能にある場合はそれを、なければ一番有名っぽそうなライブラリを使っています。

4月30日

Csharp

DateTime.Parse("2020/03/31").AddMonths(1);// 2020-04-30

Java

vardt=LocalDate.parse("2020-03-31")dt.plusMonths(1);// 2020-04-30

Kotlin

importjava.time.LocalDate;LocalDate.of(2020,3,31).plusMonths(1);// 2020-04-30

MySQL

SELECT'2020/03/31 00:00:00'+INTERVAL1MONTH//2020-04-30

Oracle

SELECTADD_MONTHS(DATE'2020-03-31',1)FROMDUAL//2020-04-30SELECTDATE'2020-03-31'+INTERVAL'1'MONTHFROMDUAL//ORA-01839:datenotvalidformonthspecified

INTERVALを存在しない日付に使うとエラーになる。

PostgreSQL

SELECTtimestamp'2020-03-31 00:00:00'+INTERVAL'1 MONTH'//2020-04-30

Python

importdatetimefromdateutil.relativedeltaimportrelativedeltaprint(datetime.datetime(2020,3,31,0,0,0)+relativedelta(months=1))//2020-04-30

Ruby

fromdateutil.relativedeltaimportrelativedeltafromdatetimeimportdatetimedatetime(2020,3,31)+relativedelta(months=1)// 2020-04-30

Swift

importFoundation;varcalendar=Calendar.current;letday=calendar.date(from:DateComponents(year:2020,month:3,day:31))!;letmodifiedDate=Calendar.current.date(byAdding:.month,value:1,to:day)!;// 2020-04-30

VisualBasic

DimdtAsDateTime=DateTime.Parse("2020/03/31").AddMonths(1)//2020-04-30

民法

ただし、月又は年によって期間を定めた場合において、最後の月に応当する日がないときは、その月の末日に満了する。

5月1日

bash

date-d"2020/03/31 00:00:00 1 month" // 2020-05-01

Go

t:=time.Date(2020,3,31,0,0,0,0,time.Local)t.AddDate(0,1,0)// 2020-05-01

JavaScript

dt=newDate("2020/03/31 00:00:00");dt.setMonth(dt.getMonth()+1);// 2020-05-01

Perl

useTime::Piece;Time::Piece->strptime("2020/03/31","%Y/%m/%d")->add_months(1);//2020-05-01

PHP

\DateTimeImmutable::createFromFormat('Y-m-d','2020-03-31')->modify('next month');// 2020-05-01

なでしこ

「2020/03/31」に「+0/1/0」を日付加算。
それを表示。 // 2020-05-01

その他

C

2020年4月31日。

intmain(void){time_tmk;structtmtm_mk;structtm*tm_lt;tm_mk.tm_year=2020-1900;tm_mk.tm_mon=3-1;tm_mk.tm_mday=31;tm_mk.tm_hour=0;tm_mk.tm_min=0;tm_mk.tm_sec=0;mk=mktime(&tm_mk);tm_lt=localtime(&mk);tm_lt->tm_mon++;printf("%04d/%02d/%02d",tm_lt->tm_year+1900,tm_lt->tm_mon+1,tm_lt->tm_mday);// 2020/04/31}

Rust

一ヶ月後を探し出せなかった

まとめ

4月30日派が多いけど、決定的というほどでもないですね。


Viewing all articles
Browse latest Browse all 331

Trending Articles