プログラム言語をまたいでいて、いつも迷うので書いておきます。
JavaScript、なぜ標準の Date型 ではなく moment.js なのかというと、今使っているのが moment だからです。
Left align | moment.js(JavaScript) | Calendar(Java) | DateTime(C#) |
---|---|---|---|
文字列からのパース | moment(text, format) | Calendarにはない(DateFormatで代用) | DateTime.Parse(text, culture) |
年を取得 | year() | get(Calendar.YEAR) | Year |
月を取得 | month() ※0〜 | get(Calendar.MONTH) ※0〜 | Month ※1〜 |
日を取得 | date() | get(Calendar.DATE) | Day |
曜日を取得 | day() SUN:0〜 | get(Calendar.DAY_OF_WEEK) SUN:1〜 | DayOfWeek SUN:0〜 |
文字列へのフォーマット | format(format) | DateFormatで代用 | ToString(format) |
サンプル
2018年1月1日は 「月曜日」 です。
あと、parse や format は Locale や Culture などに依存かもしれないので、ここでは触れないけど要注意!
Moment.js(Node.js v8.9.0)
コード
const moment = require('moment');
const m = moment('20180101', 'YYYYMMDD');
console.log(`年=${m.year()}`);
console.log(`月=${m.month()}`);
console.log(`日=${m.date()}`);
console.log(`曜日=${m.day()}`); // <---------曜日が day() で取れるなんて、わかるわけ…
console.log(`整形=${m.format('YYYY年MM月DD日')}`);
結果
年=2018
月=0 <---------月は0から
日=1
曜日=1 <---------日曜=0から
整形=2018年01月01日
Calendar(Java v1.8.0)
コード
//import java.text.DateFormat;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.Calendar;
//import java.util.Locale;
DateFormat df = new SimpleDateFormat("yyyy/MM/dd", Locale.JAPAN);
Date d = df.parse("2018/01/01");
Calendar cal = Calendar.getInstance();
cal.setTime(d);
System.out.println("年=" + cal.get(Calendar.YEAR));
System.out.println("月=" + cal.get(Calendar.MONTH));
System.out.println("日=" + cal.get(Calendar.DATE));
System.out.println("曜日=" + cal.get(Calendar.DAY_OF_WEEK));
System.out.println("整形=" + df.format(cal.getTime()));
結果
年=2018
月=0 <---------月は0から
日=1
曜日=2 <---------日曜=1から
整形=2018年01月01日
DateTime(C# / .NET Core 2.1)
コード
var d = DateTime.Parse("2018/01/01");
Console.WriteLine($"年={d.Year}");
Console.WriteLine($"月={d.Month}");
Console.WriteLine($"日={d.Day}");
Console.WriteLine($"曜日={d.DayOfWeek}({(int)d.DayOfWeek})");
Console.WriteLine($"整形={d.ToString("yyyy年MM月dd日")}"); // <------ MM だけ大文字だ
結果
年=2018
月=1 <---------月は1から
日=1
曜日=Monday(1) <---------日曜=0から(Enumでも可)
整形=2018年01月01日
参考
Moment.js
Calendar(Java)
- 【Java入門】Calendarの日付フォーマットを指定する(format) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
- Java - string型をcalender型に変換したい(33597)|teratail
- [ Java ] 日付に対応する曜日を取得する (Calendar.DAY_OF_WEEK) – 行け!偏差値40プログラマー
- SimpleDateFormatのparseでコケるときに確認すること #60 - ゆるふわ技術日誌