根据当前时间获取上一个30分钟的时间范围,
比如现在时间20120808122020,
则需要得到20120808113000--201200808120000,
求java程序,谢谢
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestTime {
public static void main(String[] args) {
System.out.println(getTimeArea(null));
}
public static String getTimeArea(Date date){
if(date == null){
date = new Date();
}
String year = getBean("yyyy").format(date);
String month = getBean("MM").format(date);
String day = getBean("dd").format(date);
String hour = getBean("HH").format(date);
String min = getBean("mm").format(date);
String min_x_1 = "00";
String min_x_2 = "29";
String min_y_1 = "30";
String min_y_2 = "59";
String sec_default_s = "00";
String sec_default_e = "59";
String con = "-";//连接符
String begin = "";
String end = "";
//验证分钟
if(Integer.parseInt(min)>30){
begin = year+month+day+hour+min_x_1+sec_default_s;
end = year+month+day+hour+min_x_2+sec_default_e;
return begin+con+end;
}else{
//先验证是不是在00:00与00:30分钟之间,包含00:00和00:30,如201208081200
if("00".equals(hour)){
hour = "23";
//在零点30分钟之间,验证是不是月初第一天,即day为01
if("01".equals(day)){
//月初第一天的凌晨,验证是不是年初第一月 20120101001200
if("01".equals(month)){
year = String.valueOf(Integer.parseInt(year)-1);
month = "12";
day = "31";
}else{
//不是年初第一月 如:20120201001200
if("03".equals(month)){
//验证是不是闰年
Integer yearInt = Integer.parseInt(year);
if((yearInt % 4 == 0 && yearInt % 100 != 0) || yearInt % 400 == 0){
day = "29";
}else{
day = "28";
}
}else{
if("05".equals(month)||"07".equals(month)||"10".equals(month)||"12".equals(month)){
day = "30";
}else{
day = "31";
}
}
month = formatDecimal(month);
}
}else{
//不是月初第一天
day = formatDecimal(day);
}
}else{
//不在零点30分钟之前
hour = formatDecimal(hour);
}
begin = year+month+day+hour+min_y_1+sec_default_s;
end = year+month+day+hour+min_y_2+sec_default_e;
return begin+con+end;
}
}
public static SimpleDateFormat getBean(String pattern){
return new SimpleDateFormat(pattern);
}
public static String formatDecimal(String data){
return new DecimalFormat("00").format(Integer.parseInt(data)-1);
}
}
public static void main(String[] args) {
System.out.println(getTimeArea(null));
}
public static String getTimeArea(Date date){
if(date == null){
date = new Date();
}
String year = getBean("yyyy").format(date);
String month = getBean("MM").format(date);
String day = getBean("dd").format(date);
String hour = getBean("HH").format(date);
String min = getBean("mm").format(date);
String min_x_1 = "00";
String min_x_2 = "29";
String min_y_1 = "30";
String min_y_2 = "59";
String sec_default_s = "00";
String sec_default_e = "59";
String con = "-";//连接符
String begin = "";
String end = "";
//验证分钟
if(Integer.parseInt(min)>30){
begin = year+month+day+hour+min_x_1+sec_default_s;
end = year+month+day+hour+min_x_2+sec_default_e;
return begin+con+end;
}else{
//先验证是不是在00:00与00:30分钟之间,包含00:00和00:30,如201208081200
if("00".equals(hour)){
hour = "23";
//在零点30分钟之间,验证是不是月初第一天,即day为01
if("01".equals(day)){
//月初第一天的凌晨,验证是不是年初第一月 20120101001200
if("01".equals(month)){
year = String.valueOf(Integer.parseInt(year)-1);
month = "12";
day = "31";
}else{
//不是年初第一月 如:20120201001200
if("03".equals(month)){
//验证是不是闰年
Integer yearInt = Integer.parseInt(year);
if((yearInt % 4 == 0 && yearInt % 100 != 0) || yearInt % 400 == 0){
day = "29";
}else{
day = "28";
}
}else{
if("05".equals(month)||"07".equals(month)||"10".equals(month)||"12".equals(month)){
day = "30";
}else{
day = "31";
}
}
month = formatDecimal(month);
}
}else{
//不是月初第一天
day = formatDecimal(day);
}
}else{
//不在零点30分钟之前
hour = formatDecimal(hour);
}
begin = year+month+day+hour+min_y_1+sec_default_s;
end = year+month+day+hour+min_y_2+sec_default_e;
return begin+con+end;
}
}
public static SimpleDateFormat getBean(String pattern){
return new SimpleDateFormat(pattern);
}
public static String formatDecimal(String data){
return new DecimalFormat("00").format(Integer.parseInt(data)-1);
}
}