Java获取当前日期开始结束时间

贴一个类,可以获得今天和昨天的开始和结束时间。时间可以是时间戳(毫秒数),也可以是字符串(设为yyyy-MM-dd HH:mm:ss)格式。

要点:当前日期要先加TimeZone.getDefault().getRawOffset()再减去,否则,在8:00前计算就会得到前一天而不是当日。

public class DateStrUtil {

//每天的毫秒数    
private static long day = 1000 * 60 * 60 * 24;
//日期字符串的格式
private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

/**
 * 返回前一天的 00:00:00 字符串格式
 *
 * @return
 */
public static String getLastDayStart() {
    return format.format(getTodayStartMills() - day);
}

/**
 * 返回前一天的 23:59:59 字符串格式
 *
 * @return
 */
public static String getLastDayEnd() {
    return format.format(getTodayStartMills() - 1);
}

/**
 * 返回当日的 00:00:00 字符串格式
 *
 * @return
 */
public static String getTodayStart() {
    long zero = getTodayStartMills();
    return format.format(zero);
}

/**
 * 返回当日的 23:59:59 字符串格式
 *
 * @return
 */
public static String getTodayEnd() {
    return format.format(getTodayStartMills() + day - 1);
}

/**
 * 返回当日的 00:00:00 毫秒格式
 *
 * @return
 */
public static long getTodayStartMills() {
    long current = System.currentTimeMillis();
    long zero = ( (current + TimeZone.getDefault().getRawOffset())/ day * day ) - TimeZone.getDefault().getRawOffset();
    return zero;
}

/**
 * 返回前一天的 00:00:00 毫秒格式
 *
 * @return
 */
public static long getLastDayStartMills() {
    return getTodayStartMills() - day;
}

}

你可能感兴趣的:(Java获取当前日期开始结束时间)