標題:
C# 7 409 計算日期差距
[打印本頁]
作者:
may
時間:
2024-1-8 22:32
標題:
C# 7 409 計算日期差距
TQC+ 物件導向程式語言
最新一次更新時間:2024-01-05 15:02:39
1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS04資料夾中的CSD04.cs進行編寫。依下列題意進行作答:輸入兩個日期,計算兩日期的差距,將計算後的年、月、日代入,使輸出值符合題意要求。檔案名稱請另存新檔為CSA04.cs,儲存於C:\ANS.CSF\CS04資料夾,再進行評分。
2. 設計說明:
請撰寫程式,讓使用者輸入兩個8位數的整數,第一個做為出生日期、第二個做為當天日期。計算此兩個日期之間的日期差距,輸出年齡如【6y:1m:23d】,分別將計算後的年、月、日代入。若輸入文字、無法轉換或出生日期大於當天日期等,請輸出【error】。
* 提示:使用DateTime.ParseExact()方法。
3. 輸入輸出:
輸入說明
兩個8位數的整數,分別代表出生日期及當天日期
輸出說明
日期差距(輸出最後一行後不自動換行)
範例輸入1
20130505
20190628
範例輸出1
6y:1m:23d
範例輸入2
20200115
19880327
範例輸出2
error
4. 評分項目:
(1) 符合設計說明輸出正確格式 配分20
作者:
may
時間:
2024-1-9 09:38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
namespace CSA04
{
class CSA04
{
static void Main(string[] args)
{
try
{
//TODO
DateTime startDay = DateTime.ParseExact(
Console.ReadLine(), "yyyyMMdd",
CultureInfo.InvariantCulture);
DateTime endDay = DateTime.ParseExact(
Console.ReadLine(), "yyyyMMdd",
CultureInfo.InvariantCulture);
// checking the arguments
if (startDay > endDay)
{
throw new ArgumentException(
"startDay should be less than endDay");
}
int years = endDay.Year - startDay.Year;
int months = endDay.Month - startDay.Month;
int days = endDay.Day - startDay.Day;
if (days < 0)
{
months -= 1;
// newMonth: the first day of the next month (from startDay)
// In this way, we could calculate the diff
// without concidering the leap month, 30/31 days
int newMonth_Year = startDay.Year;
int newMonth_Month = startDay.Month + 1;
int newMonth_Day = startDay.Day;
if (newMonth_Month > 12)
{
newMonth_Month = 1;
newMonth_Year += 1;
}
DateTime newMonthDay = new DateTime(
newMonth_Year, newMonth_Month, newMonth_Day);
days = (newMonthDay - startDay).Days;
days += (endDay.Day - newMonthDay.Day);
}
if (months < 0)
{
months += 12;
years -= 1;
}
Console.Write("{0}y:{1}m:{2}d",years, months, days);
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2