이 기사는 일반적인 캘린더 시간 작동 방법을 공유하며 특정 콘텐츠는 다음과 같습니다.
패키지 테스트; import java.text.simpledateformat; import java.util.calendar; import java.util.date;/** * 일반적인 날짜 및 달력, 많은 날짜 방법이 더 이상 사용되지 않았으므로 캘린더는 주요한 * * @author tuzongxun123 */public class arr hain (public classe) {// 현재 시스템 시간을 얻기 위해 직접 날짜를 사용하여 결과 : tue 5 월 03 03 08:25:44 CST 2016 DATE = NEW DATE (); // 특정 연도, 월, 주일 등과 같은 날짜의 많은 방법은 더 이상 권장되지 않습니다. // 대신 다양한 캘린더 방법을 사용하는 것이 좋습니다. 따라서 레코드가 만들어지지 않습니다. // 지정된 날짜의 밀리 초를 얻지 못하며, 종종 두 날짜의 크기를 비교하는 데 사용됩니다. date.gettime (); // 캘린더를 사용하여 현재 시스템 시간을 얻습니다. 캘린더 객체를 가져 와서 날짜 출력 캘린더 캘린더로 변환해야합니다. Calendar.getInstance (); //이 메소드는 날짜의 gettime과 동일하며 현재 시간 Calendar.getTimeInmillis ()의 밀리 초를 가져옵니다. 주일의 기본 첫날은 일요일 달력입니다. getfirstdayofweek (); // 현재 달력 날짜가 2016calendar.get (1); // 캘린더와 같은 연도를 반환합니다. 캘린더는 날짜로 변환됩니다. 연도, 월 및 일, 출력 결과 : MON Jun 03 09:31:59 CST 2013 // 일반적으로 사용되는 과부하 된 방법 : Calendar.Set (연도, 월, 날짜, 시간, 분); // Calendar.Set (연도, 월, 날짜, 시간, 분, 두 번째); 모든 매개 변수는 intcalendar.set (2013, 5, 3)입니다. System.out.println (calendar.gettime ()); // 캘린더 사용 연도, 출력 결과 : Fri Jun 03 09:42:43 CST 2011calendar.set (Calendar.year, 2011); System.out.println (Calendar.getTime ()); 캘린더 및 번호로 시작한다는 점에 유의하십시오. 09:45:32 CST 2011calendar.set (Calendar.month, 0); System.out.println (calendar.gettime ()); 캘린더와 그 자체 상수로 월을 설정하고, 1 월을 나타내는 월이 0에서 시작되며 출력 결과 : Calendar.set (Calendar.set) calendar.februbre); system.out.println (calendar.gettime ()); // 캘린더 및 숫자로 하루를 설정, 출력 결과 : Sat Feb 05 09:48:25 CST 2011 // Calendar.set (Calendar.day_of_month, 5) 결과는 Calendar.set (Calendar.Date, Date, Date, Date)입니다. 5); system.out.println (calendar.gettime ()); // 시간 calendar.set (calendar.hour, 15); system.out.println (calendar.gettime ()); // milliseconds calendar.settimemillis (0)의 수에 따라 캘린더 시간 설정; 09 : 25 : 29String fordate = dateToString (new date ()); System.out.println (Fordate); // 출력 결과 : 출력 결과 : Thu 11 월 12 일 13:23:11 CST 2015 Date strdate = StringTodate ( "2015-11-12 13:23:11"(StrDate.out.out.out.out.out.out.out.out); 2015calendar calendar2 = datetocalendar (strdate); system.out.println (calendar2.get (1));}/*** 지정된 형식의 지정된 날짜 유형 시간을 지정된 형식으로 문자열로 변환** @author : tuzongxun* @title : dateToString* @param date* @Rethent void* @date 3, 3, 3, 3, 3, 3, 3, 3, 3, @Param 날짜* @throws*/static String dateToString (날짜) {String str = "yyyy-mm-dd hh : mm : mm : ss"; simpledateformat format = new SimpledateFormat (str); string dateformat = format.format (날짜); 지정된 날짜 형식에서 문자열을 변환합니다. StringTodate* @param @param string* @return void* @date 2016 년 5 월 3 일 9:16:38 am* @throws*/static date strowstodate (String String) {String str = "yyyy-mm-dd hh : mm : ss"; simpledateformat = new date (smitpledateformat); new 날짜 (); format.parse (string);} catch (예외 e) {e.getStacktrace ();} 반환 날짜;}/*** 지정된 날짜 유형 날짜를 캘린더 유형으로 변환** @author : tuzongxun* @title : datetocalendar* @param @param 날짜* @return void* @date 3, 2016 9:13:49 9:13:49 DateCalendar (날짜 날짜) {Calendar Calendar = Calendar.getInstance (); Calendar.SetTime (날짜); 반환 캘린더;}}다른 함정은 무엇입니까?
구덩이는 어디에 있습니까 :
내가 전에 온 프로젝트에서, 나는 기능을 포함시켰다 : 일부 데이터를 매일 MongoDB 데이터베이스의 다른 컬렉션, 즉 관계형 데이터베이스의 테이블로 옮깁니다. 이 컬렉션 이름은 고정 이름과 현재 2 개월 전 날짜가있는 연도 및 월입니다.
이 기능은이 프로젝트에 접촉하기 전에 존재했으며,이 프로젝트는 이전 동료들이 구현 한 기능이며 Java 타이밍 작업을 작성했습니다.
그 동료들은 더 이상 우리 회사에 있지 않지만 최근에는이 기능에 문제가 있음을 발견했습니다. 데이터 이동은 예상대로 아닙니다. 2 월에 존재했던 데이터는 1 월 표에 나타났습니다.
구덩이의 뿌리 :
MongoDB 관련 문제는 일시적으로 나에 의해 유지되며,이 문제는 자연스럽게 저에 의해 해결되어야하므로 코드를 꺼내서 읽었습니다. 결과적으로 문제는 관련된 달력 방법으로 밝혀졌습니다.
두 달 전에 데이터를 전송하려면 먼저 2 개월 전에서 날짜를 얻어야합니다. 테이블 이름을 생성하기위한 관련 코드는 다음과 같습니다.
개인 문자열 getDatacollectionName () {Calendar Calendar = Calendar.getInstance (); try {calendar.set (calendar.date, -day); "alarm_" + thoolutils.datetoformatstrdate (calendar.gettime (), "yyyy_mm"); } catch (예외 e) {logger.error ( "{} : 데이터 변환 실패, {}", this.getClass (). getName (), e.getMessage ()); } return null; }문제는 나중에 쿼리 데이터의 시작 및 종료 시간을 포함하여 세트 캘린더 방법에 있으며, Calendar.set (Calendar.date, -day);
언뜻보기에,이 방법은 현재 날짜를 지정된 일 수를 뺀 날짜를 설정하는 것으로 보이지만 실제로 결과는 2 개월 전에 날짜를 얻을 수있는 것과 같이 예상되는 것과 같이 예상되지 않습니다 (여기에서 60, 즉 두 달).
구덩이를 채우십시오 :
이유를 찾은 후이 방법을 교체하고 추가로 설정했습니다. 내부 매개 변수는 이동하지 않았습니다. 결과는이 방법이 현재 기능을 진정으로 실현할 수 있음을 증명했으며, 얻은 결과는 정확히 예상 결과입니다.
물론 Calendar.set (calendar.date, calendar.get (calendar.date) -day)와 같은 방법을 변경하지 않고 매개 변수를 약간 변경할 수도 있습니다.
위의 내용은이 기사에 관한 모든 것이며, 모든 사람들이 일반적인 달력 시간 운영 방법을 마스터하는 것이 도움이되기를 바랍니다.