背景(可以忽略/跳过):
我觉得应该有一个更好的方法来做我正在做的事情,但我不知道它是什么,我认为我的解决方案有效,但我想我会问,以防有更优雅的事情或更快或其他。
我正在使用MS Razor MVC开发一个使用Html.DropDownList的网页,它提供了一个选择列表UI控件,它将选项作为显示字符串映射到整数ID代码。 (我不认为我可以将它映射到DateTime值。)
但在某些情况下,我想选择存储为DateTime对象的日期。我意识到我可以在内存中创建另一个将ID代码与DateTime值相关联的表,但我想的是(并且因为我认为我可能想要将日期编码为内联,以解决网页烦恼的另一种解决方法),我会编码日期为int。
问题:
如何最好地将DateTime对象的日期转换为int值,然后将DateTime的日期从编码的int设置回该日期。我的解决方案的主要丑陋是DateTime提供了一个只读的DayOfYear函数,但我不知道将日期设置回(Date,DayOfYear),所以我写了一个带循环的方法,这很可爱但可能会慢一些
MY CURRENT(OK)解决方案:
public int encodeDate(DateTime date)
{
return ((date.Year - 2012) * 400) + date.DayOfYear;
}
public DateTime decodeDateCode(int dateCode)
{
int year = (dateCode / 400) + 2012;
int day = dateCode % 400;
// MS DateTime doesn't provide a direct reverse conversion for DayOfYear, so find it:
int month = 1;
int mThresh = DateTime.DaysInMonth(year, month);
while (day > mThresh)
{
day -= mThresh;
month++;
mThresh = DateTime.DaysInMonth(year, month);
}
DateTime dateValue = new DateTime(year, month, day);
return dateValue;
}
答案 0 :(得分:1)
何时将时间戳格式化为POSIX时间(POSIX时间/ Unix时间,请参阅http://en.wikipedia.org/wiki/Unix_time)?
我自己遇到了类似的问题,并在此处找到了一个很好的解决方案:Convert a Unix timestamp to a .NET DateTime
从链接:
DateTime ConvertFromUnixTimestamp(double timestamp)
{
}
double ConvertToUnixTimestamp(DateTime date)
{
}