Пока формат правильный, просто сравните строки напрямую, то же самое верно в течение секунд.
String S1 = "2003-12-12 11:30:24"; String S2 = "2004-04-01 13:31:40"; int res = s1.compareto (S2);
Найдите разницу даты
SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); Дата начала = df.parse ("2004-01-02 11:30:24"); Date End = df.parse ("2004-03-26 13:31:40"); долго между = (end.gettime ()-begin.gettime ())/1000; // divid на 1000-это преобразовать в секунды int day = между/(24*3600); int Hour = от%(24*3600)/3600; int miname = от%3600/60; int второй = между%60; Часто используются классы времени и даты, поэтому обычно используемые методы и атрибуты даты суммируются следующим образом, чтобы облегчить их найти их.
1. Рассчитайте максимальное количество дней за определенный месяц
Календарное время = calendar.getInstance (); time.clear (); Time.Set (Calendar.year, год); time.set (calendar.month, i-1); // Обратите внимание, что объект календаря по умолчанию по умолчанию до 0 января.
ПРИМЕЧАНИЕ. Перед использованием метода SET лучше всего его очистить, в противном случае много информации будет унаследовано от текущего времени системного времени.
2. Преобразование календаря и даты
(1) Календарь преобразован до настоящего времени
Календарь cal = calendar.getInstance (); Дата дата = cal.getTime ();
(2) Преобразовать дату в календарь
Дата дата = новая дата (); Календарь cal = calendar.getInstance (); cal.settime (дата);
3. Отформатируйте дату и время вывода
Дата дата = новая дата (); SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); System.out.println (df.format (date)); 4. Рассчитайте, какую неделю года
(1) Рассчитайте, какая неделя года в день
Календарь cal = calendar.getInstance (); Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.Month, 9); cal.set (calendar.day_of_month, 3); int weekno = cal.get (calendar.week_of_year);
(2) Рассчитайте, какая неделя года
SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); Календарь 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-01-02
5. Использование Add () и Roll ()
(1) Метод добавить ()
SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); Календарь cal = calendar.getInstance (); Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.Month, 9); cal.set (calendar.day_of_month, 3); Cal.Add (Calendar.Date, -4); Дата дата = cal.getTime (); System.out.println (df.format (date)); Cal.Add (Calendar.date, 4); date = cal.gettime (); System.out.println (df.format (date)); Выход:
2006-08-30
2006-10-03
(2) Метод броска
Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.Month, 9); 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));
Выход:
2006-10-29
2006-10-03
Можно видеть, что метод Roll () в течение этого месяца и метод add () обычно используется;
6. Рассчитайте количество дней между двумя произвольными временами
(1) Передача в календарный объект
/*** // ** Рассчитайте количество дней между двумя разами* @param Startday Time* @param в конце дня окончания* @return*/public int getIntervaldays (календарный startday, calendar Endday) .. {// Убедитесь, что startday до Endday If (startday.after (EndDay)) .. {calendar Cal = startDay = endDay; два раза соответственно long sl = startDay.getTimeInmillis (); long el = endday.gettimeinmillis (); long ei = el-sl; // Рассчитайте дни интервала на основе Milliseconds return (int) (EI/(1000*60*60*24));}(2) Переход в объект даты
/*** // ** Рассчитайте количество дней между двумя разами* @param Startday Time* @param в конце дня окончания* @return*/public int getIntervaldays (дата начала дня, дата окончательного дня) ... {// Убедитесь, что стартовый день до конца дня, если (startday.after (endday)) .. {date cal = startday = endday; sl = startDay.getTime (); long el = endday.gettime (); long ei = el-sl; // Рассчитайте дни интервала на основе Milliseconds return (int) (EI/(1000*60*60*24));}Точно так же вы можете использовать тот же метод для расчета количества часов, минут, секунд и т. Д. Примечание. Приведенный выше метод рассчитывается полностью на основе времени, а иногда он не является удовлетворительным, например:
startDay = "2006-10-11 20:00:00" EndDay = "2006-10-12 8:00:00"
Результат расчета 0, но мы можем сделать результат расчета стать 1. В настоящее время мы можем использовать следующий метод:
Перед передачей аргумента сначала установите время в конце дня, например:
EndDay.Set (Calendar.hour_of_day, 23); Endday.set (Calendar.minute, 59); EndDay.Set (Calendar.second, 59); EndDay.Set (Calendar.millisecond, 59);
Если вы передадите его, то результат будет так, как мы хотим. Однако, если вы найдете вышеупомянутый метод проблемным, вы можете обратиться к следующему методу:
(3) улучшить метод точного расчета количества дней с интервалом
public int getDaysweeweed (календарь D1, календарь D2) ... {if (d1.after (d2)) ... {// даты обмена, так что D1 - это начало, а d2 - конец java.util.calendar swap = d1; d1 = D2; D2 = Swap;} int days = d2.get (calendar. d1.get (calendar.day_of_year); int y2 = d2.get (calendar.year); if (d1.get (calendar.year)! = y2) ... {d1 = (календарь) d1.clone (); do ... {days += d1.getactualtualmaximum (calendar. d1.add (calendar.year, 1);} while (d1.get (calendar.year)! = y2);} Дни возврата;}Получите текущее системное время:
public Static String getSystemtime () {date Date = new Date (); SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd HH: MM: ss"); return df.format (date);} // Конвертировать строку в тип времени (строка может быть любой тип, пока она не так же, как и в формате в SimpleTARATFORMAT). 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"); Simplateformat formatter = new Somplectormy-mmyyyyyyyyyyyyyyyyy-mmy-mmy-mmy-mmy-mmy-mmy-mmy-mmy-mmey-m HH: MM: SS "); String mdateTime1 = formatter.format (d); // Календарь cal = calendar.getInstance (); // simpledateformat formatter = new SimpleDateFormat (" yyyy-mm-dd hh: mm: ss "); SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss gedf w w a a ef"); string mdateTime = formatter.format (cal.gettime ()); // 1 год назад дата 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); // завтра дата mydate = new java.util.date (); mytime = (mydate.gettime ()/1000)+60*60*24; mydate.settime (mytime*1000); mdate = formatter.format (mydate); // Количество дней между двумя разами SimpledateFormat MyFormatter = new SimpleDateFormat ("yyyy-mm-dd"); myFormatter.parse("2003-05-1");java.util.Date mydate= myFormatter.parse("1899-12-30");long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);//Add half an hour SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH: MM: SS "); java.util.date Date1 = format.parse (" 2002-02-28 23:16:00 "); долгое время = (date1.gettime ()/1000)+60*30; date1.settime (время*1000); string mydate1 = formatter.format (date1); // Год, месяц, неделя, дата Simpledateformat formatter2 = new Simpledateformat ("yyyy-mm fe"); java.Util.date date2 = formatter2.parse ("2003-203-fformated; formatter3 = new SimpleDateFormat ("yyyy-mm-dd"); string mydate2 = format3.format (date2); // Найти день недели mydate = myformatter.parse ("2001-1-1"); simpledateformat formatter4 = new SimpleDateFormat ("e"); String myDate3 = formatter4.format (myDate);При разработке веб -приложений нам необходимо сделать различные конверсии в настоящее время в нашей программе для различных типов дат базы данных. Если соответствующие данные базы данных являются типом даты Oracle, то есть только год, месяц и день, вы можете использовать тип java.sql.date. Если соответствующие данные базы данных являются типом DateTime в базе данных MSSQLServer, то есть в год, месяц, день, час, минута и второе, выберите java.sql.timestamp
Вы можете использовать DateFormat для определения формата времени и даты и превратить его в строку
Package personal.jessica; import java.util.date; import java.util.calendar; import java.sql.timestamp; import java.text.dateformat; import java.text.simpledateformat; импорт java.util.locale; класс DateTest {/** метод java.sql.timestamp) *@param datestring строка, которую необходимо преобразовать в TimeStamp *@return DataTime TimeStamp */public final static java.sql.timestamp string2time (строка datestring) throws java.text.parseexception {dateformat; dateformat = new Simpleateformat ("yyyyy-mm-mm-ddsssssscssscssssscsssscssssscsssd; Locale.english); // set format // dateformat = new SimpleDateFormat ("yyyy-mm-dd kk: mm: ss", locale.english); DateFormat.SetLenient (false); java.Util.date TimeDate = dateFormat.parse (dateString); // util type java.sql.timestamp dateTime = new java.sql.timestamp (TimeDate.getTime ()); // timestam Введите на дату (java.sql.date) *@param datestring строку, которая необходимо преобразовать на сегодняшний день *@return datatime date */public final static java.sql.date string2date (String Datestring) Throws java.lang.Except Locale.english); dateformat.setLenient (false); java.util.date timeedate = dateformat.parse (datestring); // util type java.sql.date datetime = new java.sql.date (timedate.get ()); // sql type return dateTime; Date (); // Примечание. В этом месте da.gettime () получает систему длительного значения. Out.println (da.getTime ()); // конвертирование с даты в TimeStamp // Первый метод: используйте новую временную метку (Long) TimeStamp T = New TimeStamp (New Date (). GetTime ()); System.out.println (t); // Второй метод: Использовать временной метки (int year, int month, int date, int int miname, int second, int nano) timestamp tt = новая временная метка (Calendar.getinStance (). Get (Calendar.year) - 1900, Calendar.GetNSTANCE () GET (Calendar.MonStare). Calendar.date), calendar.getinstance (). Get (calendar.hour), calendar.getinstance (). Get (calendar.minute), calendar.getinstance (). Get (calendar.second), 0); System.out.println (tt); try {String stodate = "2005-18"////////contr java.sql.date stotimestamp = "2005-8-18 14: 21: 12.123"; // Standle String, используемая для преобразования в java.sql.timestamp date date1 = string2date (stodate); timestamp date2 = string2time (stotimestamp); system.out.println ("date:"+date1tstring (). Преобразовать в java.sql.timestamp date date1 = string2date (Stotimestamp); System.out.println ("Date:"+date2.tostring ()); // Standle String, используемая для конвертации в java.sql.tomestamp Дата дата 2 = String2time (Stotimestamp); System.out.println ("TimeStamp:"+date2.toString ()); // Standle Tostack} Catch (Exception e) {e.printstacktrace ();}}}Вот пример:
Код Java
Тест пакета; импорт java.text.dateformat; import java.text.parseexception; import java.text.simpledateformat; import java.util.calendar; import java.util.date; импорт java.util.hashtable; импорт javax.wang.joptionpane; a [] = s.split ("-"); boolean flg = true; if (! (integer.parseint (a [0])> = 1950 && integer.parseint (a [0]) <= 2050)) {flg = false;} return flg;} public boole checkdate (string s) {boolean ret; SimpleDateFormat ("yyyy-mm-dd"); ret = df.format (df.parse (s)). Equals (s);} catch (parseexception e) {ret = false;} return ret;} public obj Hashtable (); fest.put («01-01», «Новый год»); fest.put («02-14», «День святого Валентина»); fest.put («03-12», «День арбор»); fest.put («03-15», «День потребителя»); fest.put («04-01», «День апрельского»); »(« Fest.pup »(« Fest.pup »(« 04-01 ». Фестиваль "); fest.put (" 05-01 ",« День труда "); fest.put (" 06-01 "," Детский день "); Fest.Put (« 07-01 »,« Центрирование дня вечеринки »); fest.put (« 08-01 »,« День армии »); fest.put (« 09-10 »,« День преподавателя »);« Fest.1011 »(10-10. Day "); fest.put (" 12-25 "," Рождество "); if (fest.containskey (a [1])) {return fest.get (a [1]);} else {return" no Holiday ";}} public string xingzuo (дата s) {calendar cal = calendar.getinStance (); singlime (s); day = cal.get (calendar.day_of_year); if ((cal.get (calendar.year)%4 == 0) && (cal.get (calendar.year)%100! = 0) || (cal.get (calendar.year)%400 == 0)) {if (day> = 1 && day <= 19) || (day> = 357 && day <= 366)) {xingzuo = "scorpio";} else if (day> = 20 && day <= 49) {xingzuo = "aquarius";} else if (day> = 50 && day <= 80) {xingzuo = "pisces"; && day <= 110) {xingzuo = "aries";} else if (day> = 111 && day <= 141) {xingzuo = "taurus";} else if (day> = 142 && day <= 173) {xingzuo = "gemini";} else ens (day> = 174 && Juld <= 203) {xInze "; else if (day> = 204 && day <= 235) {xingzuo = "leo";} else if (day> = 236 && day <= 266) {xingzuo = "Virgo";} else if (day> = 267 && day <= 296) {xingzuo = "libra"; "Scorpio";} else if (day> = 327 && day <= 356) {xingzuo = "sauvignon";}} else {if ((day> = 1 && day <= 19) || (day> = 357 && day <= 366)) {xingzuo = "scorpio"; && day <= 48) {xingzuo = "aquarius";} else if (day> = 49 && day <= 79) {xingzuo = "pisces";} else if (day> = 80 && day <= 109) {xingzuo = "aries";} else (day> = 110 && day <= 140) {xingu "; else if (day> = 141 && day <= 172) {xingzuo = "gemini";} else if (day> = 173 && day <= 202) {xingzuo = "canc "Virgo";} else if (day> = 266 && day <= 295) {xingzuo = "libra";} else if (day> = 296 && day <= 325) {xingzuo = "scorpio";} else if (day> = 326 && day <= 355) {xingzuo = "saucy"; parsedate (string s) {simpledateformat bartdateformat = new SimpleDateFormat ("yyyy-mm-dd"); try {date date3 = bartdateformat.parse (s); date3 = bartdateformat.parse (s); return date3;} catch ex) {return null;} public void void void main void void void void void void void void void void void Calendar.getInstance (); test2 test2 = new Test2 (); строка date1 = joptionpane.showinputdialog («Пожалуйста, введите дату, формат как 2000-10-15»); while (! (test2.checkdate (date1) && test2.isdate (date1))) {date1 = joptionpane.showinputdialog («Пожалуйста, введите дату, формат как 2000-10-15»);} SimpleDateFormat BartDateFormat1 = новый SimpleDateFormat ("yyyy, mm, dd, eee-eee"; new SimpleDateFormat ("yyyy-mm-dd"); date Date2 = test2.parsedate (date1); string festinfo = (String) test2.dateinfo (date1); System.out.println (bartdateformat1.format (date2)+","+festinfo+","+test2.xingzu day = joptionpane.showinputdialog («Пожалуйста, введите информацию о дате, чтобы запросить n дней»); cal.settime (date2); cal.add (calendar.date, integer.parseint (day)); строка date5 = bartdateformat2.format (cal.gettime ()); festinfo = (string) test2.dateinfo (date5); System.out.println (bartdateformat1.format (cal.gettime ())+","+festinfo+","+test2.xingzuo (cal.gettime ());Суммировать
Выше приведено все подробное объяснение Java Time и Date Code и запроса в этой статье. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!