Java中日期处理

 
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.GregorianCalendar;
/*
    G  Era 标志符
    y  年
    M  年中的月份 
    w  年中的周数  
    W  月份中的周数
    D  年中的天数
    d  月份中的天数
    F  月份中的星期
    E  星期中的天数
    a  Am/pm 标记
    H  一天中的小时数(0-23)
    k  一天中的小时数(1-24)
    K  am/pm 中的小时数(0-11)
    h  am/pm 中的小时数(1-12)
    m  小时中的分钟数
    s  分钟中的秒数
    S  毫秒数
    z  时区
    Z  时区
*/
public class SimpleDateFormatTest
{
    
/**
     * 字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
     * parse
     
*/
    
public static void parse() throws Exception
    {        
        
//注意MM是月,mm是分钟,HH代表0-23,hh代表1-12 AM/PM
        String dateStr = "10/23/2006 6:35:55";
        SimpleDateFormat formatter 
= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date 
= formatter.parse(dateStr);
        System.out.println(date);    
    }
    
    
/**
     * 日期类型转换成字符串
     * format
     
*/
    
public static void format() throws Exception
    {        
        SimpleDateFormat formatter1 
= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date1 
= formatter1.parse("10/23/2006 6:35:55");
        System.out.println(date1);
        
        GregorianCalendar gc 
= new GregorianCalendar(2006,8,22,9,44,56);
        Date date2 
= gc.getTime();
        SimpleDateFormat formatter2 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        String str1 
= formatter2.format(date1);
        String str2 
= formatter2.format(date2);
        System.out.println(str1);
        System.out.println(str2);        
    }
    
    
/**
     * 当前时间
     
*/ 
    
public static void nowDate()
    {                
        GregorianCalendar gc 
= new GregorianCalendar();
        SimpleDateFormat formatter 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
        Date nowDate 
= gc.getTime();        
        String nowDateStr 
= formatter.format(nowDate);
        System.out.println(
"now date : " + nowDateStr);
        
    }
    
    
/**
     * 1年前此时
     
*/ 
    
public static void yesteryear()
    {        
        GregorianCalendar gc 
= new GregorianCalendar();
        Date nowDate 
= gc.getTime();
        
        SimpleDateFormat formatter 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String nowDateStr 
= formatter.format(nowDate);
        System.out.println(
"now date: " + nowDateStr);
        
        
//此时自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数
        long nowDateMS = nowDate.getTime();
        
        
//去年此时自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数
        long yesteryearNowDateMS = (nowDateMS/1000 - 60*60*24*365)*1000;
        
        Date yesteryearNowDate 
= new Date(yesteryearNowDateMS);        
        String yesteryearNowDateStr 
= formatter.format(yesteryearNowDate);
        System.out.println(
"yesteryear date: " + yesteryearNowDateStr);    
    } 
    
    
/**
     * 明天此时
     
*/
    
public static void tomorrow()
    {        
        
//当前日期
        GregorianCalendar gc = new GregorianCalendar();
        Date nowDate 
= gc.getTime();
        
        SimpleDateFormat formatter 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String nowDateStr 
= formatter.format(nowDate);
        System.out.println(
"now date: " + nowDateStr);
        
        
//当前自1970.1.1 00:00:00GMT以来的毫秒数
        long nowTime = nowDate.getTime();
        
        
//明天此时自1970.1.1 00:00:00GMT以来的毫秒数
        long tomorrowTime = (nowTime/1000 + 60*60*24)*1000;
        
        Date tommorDate 
= new Date(tomorrowTime);
        String tomorrowThisTimeStr 
= formatter.format(tommorDate);
        System.out.println(
"tomorrow this date: " + tomorrowThisTimeStr);
    }
    
    
/**
     * 两个时间之间的天数
     *
     
*/
    
public static void interval() throws Exception
    {
        String strA 
= "2006-9-10";    
        String strB 
= "2006-9-16";
        
        SimpleDateFormat formatter 
= new SimpleDateFormat("yyyy-MM-dd");
        
        Date dateA 
= formatter.parse(strA);
        Date dateB 
= formatter.parse(strB);
        
        
long dateAMS = dateA.getTime();
        
long dateBMS = dateB.getTime();
        
        
//两日期相差的毫秒数
        long intervalMS = dateBMS - dateAMS;
        
        
//两日期相差的天数
        long intervalDay = intervalMS/1000/60/60/24;
        
        System.out.println(strA 
+ "" + strB + "相隔" + intervalDay + "");
    }

    
/**
     * 某年某月第几周求日期
     * 如:2006年9月的第2个星期五是几号
     
*/
    
public static void calculatDate() throws Exception
    {
        SimpleDateFormat formatter2 
= new SimpleDateFormat("yyyy-MM F E");
        Date date2
= formatter2.parse("2006-09 2 星期五");//2006年9月的第2个星期五是几号
        SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
        String mydate2
=formatter3.format(date2);
        
        System.out.println(mydate2);
    }
    
    
/**
     * 给定日期求是星期几
     
*/
    
public static void calculatWeek() throws Exception
    {
        SimpleDateFormat formatter1 
= new SimpleDateFormat("yyyy-MM-dd");
        Date date 
= formatter1.parse("2006-9-10");
        
        SimpleDateFormat formatter2 
= new SimpleDateFormat("E");
        String weekStr 
= formatter2.format(date);
        
        System.out.println(weekStr);
    }
    
    
public static void main(String[] args) throws Exception
    {
        parse();                
        format();        
        nowDate();        
        yesteryear();        
        tomorrow();
        interval();
        calculatDate();
        calculatWeek();
    }    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值