java 시간 관련 처리 소결

7228 단어 java시간 처리
1. 한 달의 최대 일수 계산

Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year int
time.set(Calendar.MONTH,i-1);// ,Calendar 0         
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//
: set , clear ,
2.Calendar 및 Date 전환
(1) Calendar가 Date로 전환됩니다

Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
(2) 날짜가 Calendar로 바뀝니다

Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3.출력 날짜 시간을 포맷합니다

Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=df.format(date);
System.out.println(time);
4.일 년 중 몇 주일을 계산하다
(1) 어느 날이 일년 중 몇 주일인지 계산한다

Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2) 일 년 중 몇 주일이 며칠인지 계산한다.출력: 2006-01-02
5.add() 및 roll() 사용법(상용하지 않음)
(1)add() 방법

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
출력: 2006-08-30 2006-09-03(2)roll 방법

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
출력: 2006-09-29 2006-09-03을 보면 알 수 있듯이 롤() 방법은 이달 안에 순환하고 일반적으로add() 방법을 사용한다.
6. 임의의 시간 사이의 간격 일수를 계산합니다(이것은 비교적 자주 사용됩니다). (1) Calendar 객체로 전달됩니다

cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
(2) Date 객체로 전송합니다

    public int getIntervalDays(Calendar startday,Calendar endday)...{     
        if(startday.after(endday))...{
            Calendar cal=startday;
            startday=endday;
            endday=cal;
        }  
        long sl=startday.getTimeInMillis();
        long el=endday.getTimeInMillis();

        long ei=el-sl;         
        return (int)(ei/(1000*60*60*24));
    }
(3) 간격 일수를 정확하게 계산하는 방법을 개선한다

    public int getIntervalDays(Date startday,Date endday)...{      
        if(startday.after(endday))...{
            Date cal=startday;
            startday=endday;
            endday=cal;
        }      
        long sl=startday.getTime();
        long el=endday.getTime();     
        long ei=el-sl;         
        return (int)(ei/(1000*60*60*24));
    }
주의: 위의 방법을 통해 메일박스가 3주 안에 받은 메일(현재 시스템 시간 얻기 - 3주 전 시간 얻기)을 찾아내려면 수신 시간에 맞추어 롱으로 설치하는 것이 가장 좋다. 예를 들어 1년 전 날짜(밀리초 변환 주의)

    public int getDaysBetween (Calendar d1, Calendar d2) ...{
        if (d1.after(d2)) ...{
            java.util.Calendar swap = d1;
            d1 = d2;
            d2 = swap;
        }
        int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
        int y2 = d2.get(Calendar.YEAR);
        if (d1.get(Calendar.YEAR) != y2) ...{
            d1 = (Calendar) d1.clone();
            do ...{
                days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//
                d1.add(Calendar.YEAR, 1);
            } while (d1.get(Calendar.YEAR) != y2);
        }
        return days;
    }
7. String 및 Date, Long 간 상호 변환
문자열은 시간 형식으로 바뀐다. (문자열은 임의의 형식일 수 있으며, SimpleDateFormat의 형식과 일치하기만 하면 된다.) 보통 우리가 시간의 경계를 취할 때substring에서 구체적인 시간을 비교한다

   java.util.Date myDate=new java.util.Date();
   long myTime=(myDate.getTime()/1000)-60*60*24*365;
   myDate.setTime(myTime*1000);
   String mDate=formatter.format(myDate);
8. 시간을 통해 시간을 구하다
년 월 주구 날짜.요일입니다

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
long dvalue=d.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
9. java와 구체적인 데이터베이스 결합
웹 응용 프로그램을 개발하는 과정에서 서로 다른 데이터베이스 날짜 유형에 대해 우리는 프로그램에서 날짜 유형에 대해 다양한 변환을 해야 한다.만약에 대응하는 데이터베이스 데이터가oracle의 Date 형식이라면 연월일만 있으면 자바를 사용할 수 있습니다.sql.Date 형식, MSsqlserver 데이터베이스에 대응하는 DateTime 형식, 즉 연월일 시분초가 필요한 경우java를 선택하십시오.sql.Timestamp 형식은 날짜 형식을 dateFormat으로 정의할 수 있습니다. 문자열을 바꾸면 됩니다.
class Datetest{*method는 문자열 형식의 날짜를 timestamp(시간 스탬프 java.sql.Timestamp)*@param dateString에서 timestamp로 변환해야 하는 문자열*@return dataTime timestamp

SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 ");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
*method는 문자열 형식의 날짜를 날짜(java.sql.Date)*@param dateString에서 날짜로 변환해야 하는 문자열*@return dataTime Date

mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
public static void main (String []args) {Date da = new Date (); 주의: 이 곳에서 da.getTime () 는 롱형 값 System.out.println (da.getTime () 입니다.
날짜 날짜에서 timestamp로 변환
첫 번째 방법: new Timestamp(long) Timestamp t = new Timestamp(new Date()를 사용합니다.getTime());System.out.println(t);
두 번째 방법: Timestamp(int year, int month, int date, int hour, int minute, int second, int nano)를 사용합니다

public final static java.sql.Timestamp string2Time(String dateString)
throws java.text.ParseException {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//
//dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp ,timeDate.getTime() long
return dateTime;
}

좋은 웹페이지 즐겨찾기