@ -11,6 +11,7 @@
# include <common.h>
# include <command.h>
# include <errno.h>
# include <rtc.h>
# if defined(CONFIG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
@ -30,13 +31,15 @@ static int month_days[12] = {
/*
* This only works for the Gregorian calendar - i . e . after 1752 ( in the UK )
*/
void GregorianD ay( struct rtc_time * tm )
int rtc_calc_weekd ay( struct rtc_time * tm )
{
int leapsToDate ;
int lastYear ;
int day ;
int MonthOffset [ ] = { 0 , 31 , 59 , 90 , 120 , 151 , 181 , 212 , 243 , 273 , 304 , 334 } ;
if ( tm - > tm_year < 1753 )
return - EINVAL ;
lastYear = tm - > tm_year - 1 ;
/*
@ -64,6 +67,8 @@ void GregorianDay(struct rtc_time * tm)
day + = lastYear * 365 + leapsToDate + MonthOffset [ tm - > tm_mon - 1 ] + tm - > tm_mday ;
tm - > tm_wday = day % 7 ;
return 0 ;
}
void to_tm ( int tim , struct rtc_time * tm )
@ -101,7 +106,7 @@ void to_tm(int tim, struct rtc_time * tm)
/*
* Determine the day of week
*/
GregorianD ay( tm ) ;
rtc_calc_weekd ay( tm ) ;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.