uint dosTime ;
public DateTime DateTime 
{
get {
// Although technically not valid some archives have dates set to zero.
// This mimics some archivers handling and is a good a cludge as any probably.
if ( dosTime == 0 ) {
return DateTime.Now;
}
else {
uint sec  = 2 * (dosTime & 0x1f);
uint min  = (dosTime >> 5) & 0x3f;
uint hrs  = (dosTime >> 11) & 0x1f;
uint day  = (dosTime >> 16) & 0x1f;
uint mon  = ((dosTime >> 21) & 0xf);
uint year = ((dosTime >> 25) & 0x7f) + 1980;
return new System.DateTime((int)year, (int)mon, (int)day, (int)hrs, (int)min, (int)sec);
}
}
set {
DosTime = ((uint)value.Year - 1980 & 0x7f) << 25 | 
((uint)value.Month) << 21 |
((uint)value.Day) << 16 |
((uint)value.Hour) << 11 |
((uint)value.Minute) << 5 |
((uint)value.Second) >> 1;
}
}
那个DateTime 属性怎么搞的这么麻烦,不清楚高手的用意,请哪位高手指点下
为什么要移位,还要进行逻辑与运算?想不明白~