常見應用:
我多大了,在職時間
C#代碼:
1 /// 通過出生日期和目前日期計算年,月,天
2 /// </summary>
3 /// <param name="birth">出生日期</param>
4 /// <param name="now">目前日期</param>
5 /// <param name="year">年</param>
6 /// <param name="month">月</param>
7 /// <param name="day">天</param>
8 private void GetDateByBirth(DateTime birth, DateTime now, out int year, out int month,
9 out int day)
10 {
11 //出生日期的年,月,日
12 int birthYear = birth.Year;
13 int birthMonth = birth.Month;
14 int birthDay = birth.Day;
15
16 //目前時間的年,月,日
17 int nowYear = now.Year;
18 int nowMonth = now.Month;
19 int nowDay = now.Day;
20
21 //得到天
22 if (nowDay >= birthDay)
23 {
24 day = nowDay - birthDay;
25 }
26 else
27 {
28 nowMonth -= 1;
29 day = GetDay(nowMonth, nowYear) + nowDay - birthDay;
30 }
31
32 //得到月
33 if (nowMonth >= birthMonth)
34 {
35 month = nowMonth - birthMonth;
36 }
37 else
38 {
39 nowYear -= 1;
40 month = 12 + nowMonth - birthMonth;
41 }
42
43 //得到年
44 year = nowYear - birthYear;
45 }
46
47 /// <summary>
48 /// 擷取天數
49 /// </summary>
50 private int GetDay(int month, int year)
51 {
52 int day = 0;
53 switch (month)
54 {
55 case 1:
56 case 3:
57 case 5:
58 case 7:
59 case 8:
60 case 10:
61 case 12:
62 day = 31;
63 break;
64 case 2:
65 //閏年天,平年天
66 if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
67 {
68 day = 29;
69 }
70 else
71 {
72 day = 28;
73 }
74 break;
75 case 4:
76 case 6:
77 case 9:
78 case 11:
79 day = 30;
80 break;
81 }
82 return day;
83 }
Js代碼:
1 function GetDateValue(entry){
2 //內插補點
3 var year;
4 var month;
5 var day;
6
7 //入職日期
8 var dateArr = entry.split("-");
9 var entry_year = parseInt(dateArr[0]);
10 var entry_month = parseInt(dateArr[1]);
11 var entry_day = parseInt(dateArr[2]);
12 //目前日期
13 var d = new Date();
14 var now_year = d.getFullYear();
15 var now_day = d.getDate();
16 var now_month = d.getMonth() + 1;
17
18 //得到天
19 if(now_day >= entry_day){
20 day = now_day - entry_day;
21 }else{
22 now_month = now_month - 1;
23 day = GetDay(now_month,now_year) + now_day - entry_day;
24 }
25 //得到月
26 if(now_month >= entry_month){
27 month = now_month - entry_month;
28 }else{
29 now_year = now_year -1;
30 month = 12 + now_month - entry_month;
31 }
32 //得到年
33 year = now_year - entry_year;
34
35 //字元串
36 var basic_experience = " 在職";
37 if (year != 0)
38 basic_experience += Math.abs(year) + "年";
39 if (month != 0)
40 basic_experience += Math.abs(month) + "月";
41 if (day != 0)
42 basic_experience += Math.abs(day) + "天";
43 return basic_experience;
44 }
45 //擷取天
46 function GetDay(month,year){
47 var day = 0;
48 if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
49 day = 31;
50 }else if(month == 2){
51 if(year % 4 == 0 && year % 100 !=0 || year % 400 == 0){
52 day = 29;
53 }else{
54 day = 28;
55 }
56 }else if(month == 4 || month == 6 || month == 9 || month == 11){
57 day = 30;
58 }
59 return day;
60 }
