LoginSignup
2
1

More than 5 years have passed since last update.

moment.js(JavaScript) vs Calendar(Java) vs DateTime(C#)

Last updated at Posted at 2018-07-30

プログラム言語をまたいでいて、いつも迷うので書いておきます。
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)

DateTime(C#/.NET)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1