将unix时间转换为日期
发布时间:2020-12-15 21:02:08 所属栏目:安全 来源:网络整理
导读:我正在做一个函数,将unix时间转换为日期(dd-mm-yyyy) stock UnixToTime(x){ new year = 1970; new dia = 1; new mes = 1; while(x 86400) { x -= 86400; dia ++; if(dia == getTotalDaysInMonth(mes,year)) { dia = 1; mes ++; if (mes = 12) { year ++; mes
我正在做一个函数,将unix时间转换为日期(dd-mm-yyyy)
stock UnixToTime(x) { new year = 1970; new dia = 1; new mes = 1; while(x > 86400) { x -= 86400; dia ++; if(dia == getTotalDaysInMonth(mes,year)) { dia = 1; mes ++; if (mes >= 12) { year ++; mes = 1; } } } printf("%i-%i-%i",dia,mes,year); return x; } 但不行. 我正在使用1458342000(今天……)测试功能,但打印> 13-3-2022,这是什么错误? #define IsLeapYear(%1) ((%1 % 4 == 0 && %1 % 100 != 0) || %1 % 400 == 0) getTotalDaysInMonth就是这个; stock getTotalDaysInMonth(_month,year) { new dias[] = { 31,// Enero 28,// Febrero 31,// Marzo 30,// Abril 31,// Mayo 30,// Junio 31,// Julio 31,// Agosto 30,// Septiembre 31,// Octubre 30,// Noviembre 31 // Diciembre }; return ((_month >= 1 && _month <= 12) ? (dias[_month-1] + (IsLeapYear(year) && _month == 2 ? 1 : 0)) : 0); } 解决方法
您的算法有几个问题:
> while循环测试应该是while(x> = 86400),否则你在午夜休息一天. 这是一个更正版本: stock UnixToTime(x) { new year = 1970; new dia = 1; new mes = 1; while (x >= 86400) { x -= 86400; dia++; if (dia > getTotalDaysInMonth(mes,year)) { dia = 1; mes++; if (mes > 12) { year++; mes = 1; } } } printf("%i-%i-%in",year); return x; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |