-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathWikidate.cs
More file actions
84 lines (76 loc) · 2.68 KB
/
Wikidate.cs
File metadata and controls
84 lines (76 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WikiAccess
{
public enum DatePrecision { Null, Day, Month, Year, Decade, Century, Unknown, NotEntered, NoProperty, BCE, Invalid, Millenium };
/// <summary>
/// Class to hold a date, which includes a precision
/// </summary>
public class Wikidate
{
public Wikidate() { }
public DateTime thisDate { get; set; }
public DatePrecision thisPrecision { get; set; }
public int Year
{
get
{
if (isCalculable(thisPrecision))
return thisDate.Year;
else
return 0;
}
}
public override string ToString()
{
string FormattedDate = "Invalid";
switch (thisPrecision)
{
case DatePrecision.Null:
case DatePrecision.Day:
FormattedDate = thisDate.ToString("d MMMM yyyy");
break;
case DatePrecision.Month:
FormattedDate = thisDate.ToString("MMMM yyyy");
break;
case DatePrecision.Year:
FormattedDate = thisDate.ToString("yyyy");
break;
case DatePrecision.Decade:
FormattedDate = thisDate.ToString("yyyy").Substring(0, 3) + "0s";
break;
case DatePrecision.Century:
int Century = Convert.ToInt32(thisDate.ToString("yyyy").Substring(0, 2));
FormattedDate = (Century + 1).ToString() + "th century";
break;
case DatePrecision.Millenium:
int Millenium = Convert.ToInt32(thisDate.ToString("yyyy").Substring(0, 1));
FormattedDate = (Millenium + 1).ToString() + " millenium";
break;
case DatePrecision.Unknown:
FormattedDate = "Unknown";
break;
case DatePrecision.NotEntered:
case DatePrecision.NoProperty:
FormattedDate = "No value";
break;
}
return FormattedDate;
}
public static bool isCalculable(DatePrecision thisPrecision)
{
switch (thisPrecision)
{
case DatePrecision.Day:
case DatePrecision.Decade:
case DatePrecision.Month:
case DatePrecision.Year:
return true;
default:
return false;
}
}
}
}