Dartで西暦、和暦、年齢、干支を相互に変換する方法についてソースコード付きでまとめました。
【Dart】西暦、和暦、年齢、干支を相互変換
Dartで、西暦、和暦、年齢、干支を相互に変換するプログラムを作成してみました。
| – | pub.devにパッケージを公開しています |
|---|---|
| 1 | https://pub.dev/packages/calendar_jp |
class Calendar {
Calendar() {}
// 年齢 → 干支
String yearToEto(num year) {
var arr = ["申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未"];
return arr[year % 12];
}
// 西暦 → 和暦
String yearToWareki(num year, num month, num day) {
var wareki = "エラー";
if ((year == 2019) && (month < 5)) {
wareki = "平成31";
} else if ((year == 1989) && (month < 2) && (day < 8)) {
wareki = "昭和64";
} else if ((year == 1926) && (month < 13) && (day < 26)) {
wareki = "大正15";
} else if ((year == 1926) && (month < 12)) {
wareki = "大正15";
} else if ((year == 1868) && (month < 8) && (day < 31)) {
wareki = "明治45";
} else if ((year == 1868) && (month < 7)) {
wareki = "明治45";
} else if (year > 2018)
wareki = "令和" + (year - 2018).toString();
else if (year > 1988)
wareki = "平成" + (year - 1988).toString();
else if (year > 1925)
wareki = "昭和" + (year - 1925).toString();
else if (year > 1911)
wareki = "大正" + (year - 1911).toString();
else
wareki = "明治" + (year - 1867).toString();
return wareki;
}
// 和暦 → 西暦
num warekiToYear(String nengo, num yearWareki) {
if ((nengo == "令和") && (yearWareki > 0)) {
return yearWareki + 2018;
} else if ((nengo == "平成") && (yearWareki > 0)) {
return yearWareki + 1988;
} else if ((nengo == "昭和") && (yearWareki > 0) && (yearWareki <= 64)) {
return yearWareki + 1925;
} else if ((nengo == "大正") && (yearWareki > 0) && (yearWareki <= 15)) {
return yearWareki + 1911;
} else if ((nengo == "明治") && (yearWareki > 0) && (yearWareki <= 45)) {
return yearWareki + 1867;
} else {}
return -1;
}
// 西暦 → 年齢
num yearToAge(num year, num month, num day) {
//今日
var now = new DateTime.now();
// 生年月日
var birthday = new DateTime(year, month, day);
// 今年の誕生日
var thisYearBirthday = new DateTime(now.year, month, day);
//今年-誕生年
var age = now.year - birthday.year;
//今年の誕生日を迎えていなければage-1を返す
if (thisYearBirthday.isAfter(now)) {
age = age - 1;
}
return age;
}
}
void main() {
var calender = Calendar();
// 西暦 → 干支
String eto = calender.yearToEto(1992);
print(eto); // 申
// 西暦 → 和暦
String wareki = calender.yearToWareki(1992, 7, 23);
print(wareki); // 平成4
// 和暦 → 西暦
num year = calender.warekiToYear("平成", 4);
print(year); // 1992
// 西暦 → 年齢
num age = calender.yearToAge(1992, 7, 23);
print(age); // 26
}
| - | 関連記事 |
|---|---|
| 1 | ■【Flutter入門】iOS、Android、Windowsアプリ開発 |
| 2 | 【Dart入門】基礎文法とサンプルコード集 |

コメント