好的,所以我将日期存储为ddmmyy或dmmyy格式的int,并且前导0被截断,例如10914或100914
在某些条件下,此值为0表示000000。
如何在不转换为字符串的情况下将其转换为DateTime(由于它可能为0)?是否有某种DateTime.Parse重载?
答案 0 :(得分:6)
您可以使用整数除法和模函数来分解这三个部分,然后使用DateTime(int,int,int)构造函数来创建DateTime值。 您还需要在某些时候将年份改为完整的四位数年份。
这样的事情:
int year = (date % 100) + 2000;
int month = (date / 100) % 100;
int day = (date / 100000);
DateTime result = new DateTime(year, month, day);
答案 1 :(得分:0)
int UrInt = 000000;
GroupCollection groups = Regex.Match(UrInt.ToString(), @"^(?<DAY>[0-9]{1,2})(?<MONTH>[0-9]{2})(?<YEAR>[0-9]{2})$").Groups;
int month;
if (int.TryParse(groups["MONTH"].Value, out month) == false)
{
month = 1;
}
int day;
if (int.TryParse(groups["DAY"].Value, out day) == false)
{
day = 1;
}
int year;
string _tmp = groups["YEAR"].Value;
// If the year matches 80-99 it will be 19xx if the year matches 00-79 it will be 20xx
if (Regex.IsMatch(_tmp, @"^[8-9]{1}[0-9]{1}$"))
{
_tmp = String.Join("", "19", _tmp);
if (int.TryParse(_tmp, out year) == false)
{
year = 1979;
}
}
else
{
_tmp = String.Join("", "20", _tmp);
if (int.TryParse(_tmp, out year) == false)
{
year = 1979;
}
}
DateTime UrDateTime = new DateTime(year, month, day);
不是最好的方式,但我认为,这将匹配您的搜索字词。 ;)
注
你必须根据你的需要更正年份匹配@&#34; ^ [8-9] {1} [0-9] {1} $&#34;
说明:
^ =行开头
[8-9] {1} =匹配第一位数字8-9
[0-9] {1} =匹配2cnd数字0-9
$ =行结束
希望这有帮助。