import java.util.Date;public class HotArticleRank {	/************	 * 输入发贴时间,返回发贴时间距离1970.1.1的秒数	 * @param Date dateTimes	 * @return	 */	private static long epoch_seconds(Date pubtimes) {		return pubtimes.getTime() / 1000 - 1134028003;	}	/******	 * 输入顶,踩,返回差值	 * @param ups	 * @param downs	 * @return	 */	private static long score(long ups, long downs) {		return ups - downs;	}	/******	 * 计算热度值,输入顶,踩和发贴时间,返回热度值	 * @param ups 文章顶的数量	 * @param downs 文章踩的数量	 * @param pubtimes 文章发布时间	 * @return	 */	public static double getHotVal(long ups, long downs, Date pubtimes) {		double hotrank = 0;		long seconds = 0;		long scorecount = 0;		double order = 0;		long signcount = 0;		scorecount = score(ups, downs);		seconds = epoch_seconds(pubtimes);		//计算贴子的受肯定(否定)的程度,如果对某个贴子的评价,越是一边倒,		//order就越大,但会趋于平缓。如果顶等于踩,则为0		order = Math.log10(Math.max(Math.abs(scorecount), 1));		signcount = (long) Math.signum(scorecount);		//seconds越大,得分越高,即新帖子的得分会高于老帖子。		//它起到自动将老帖子的排名往下拉的作用。		hotrank = order + (signcount * seconds) / 45000;		return hotrank;	}}