HomeForumSourceResearchGuide
Sign in to contribute to source. how it works
Component time.TimeDOS by barry
expand copy to clipboardexpand
component provides TimeDOS {
	
	int2 TimeDOS:toDOSTime(DateTime dt)
		{
		int2 hour = dt.hour
		hour = hour << 11
		int2 minute = dt.minute
		minute = minute << 5
		int2 second = dt.second / 2
		
		return hour | minute | second
		}
	
	int2 TimeDOS:toDOSDate(DateTime dt)
		{
		int2 year = dt.year - 1980
		year = (year << 9)
		int2 month = dt.month
		month = month << 5
		int2 day = dt.day
		
		return year | month | day
		}
	
	DateTime TimeDOS:fromDOSTime(int2 date, int2 time)
		{
		DateTime result = new DateTime()
		
		int2 year = ((date >> 9) & 0x7F) + 1980
		int2 month = (date >> 5) & 0x0F
		int2 day = date & 0x1F
		
		result.year = year
		result.month = month
		result.day = day
		
		int2 hour = time >> 11
		int2 minute = (time >> 5) & 0x3F
		int2 second = (time & 0x1F) * 2
		
		result.hour = hour
		result.minute = minute
		result.second = second
		
		return result
		}
	
	}
Revision history
To propose a new revision to this entity, use dana source put -uc your/new/version.dn -n time.TimeDOS -m "reason for update" -u yourUsername
Version 1 (this version) by barry
Notes for this version: Standard Library Initialisation