2013 年 1 月 31 日などの日付を年 (この場合は 31) に変換したいと考えています。この日付はユーザー入力によるものなので、有効な日付かどうかも確認する必要があります。以下のように、自分で年を計算できることを知っています。
int get_yday(int mon, int day, int year)
{
int yday=0;
mon--;
switch (mon){
case 12:
yday+=31;
case 11:
yday+=30;
....
case 2:
if (is_leap_year(year)) yday+=29;
else yday+=28;
.....
ただし、これは、ユーザー入力を自分で確認する必要があることを意味します
switch(month){
case 1:
if (day > 31 || day < 0) {...}
case 2:
if (...check leap year and day ...) {...}
年を簡単に取得するための C の組み込み API はありますか?
以下に解決策がありますが、より良い解決策があるかどうかを知りたいです。
1. creating a tm struct of 01/31/2013 00:00:00
2. get timestamp by mktime()
3. convert timestamp to struct tm by localtime()
4. get tm_yday from tm struct