Enquanto o formato estiver correto, basta comparar as cordas diretamente, o mesmo se aplica aos segundos.
String S1 = "2003-12-12 11:30:24"; String S2 = "2004-04-01 13:31:40"; int res = s1.compareto (s2);
Encontre a diferença de data
SimpledateFormat df = new SimpleDateFormat ("AAAA-MM-DD HH: MM: SS"); Data BEGIN = df.parse ("2004-01-02 11:30:24"); Data final = df.parse ("2004-03-26 13:31:40"); long entre = (end.getTime ()-BEGIN.GETTIME ())/1000; // Divid By 1000 é converter em segundos int dia = entre/(24*3600); int hora = entre%(24*3600)/3600; int minuto = entre%3600/60; int segundo = entre%60; As classes de horário e data são frequentemente usadas; portanto, os métodos e atributos de data comumente usados são resumidos da seguinte forma para facilitar todos para encontrá -los.
1. Calcule o número máximo de dias em um determinado mês
Tempo de calendário = calendário.getInstance (); time.clear (); time.set (calendário.year, ano); time.set (calendar.month, i-1); // Observe que o objeto do calendário é padronizado para 0 de janeiro de int dia = time.getActualMaximum (calendar.day_of_month); // o número de dias neste mês
NOTA: Antes de usar o método Set, é melhor limpá -lo primeiro, caso contrário, muitas informações serão herdadas a partir do horário atual do sistema.
2. Conversão do calendário e data
(1) Calendário convertido até a data
Calendário cal = calendar.getInstance (); Data data = cal.gettime ();
(2) converter data em calendário
Data data = new Date (); Calendário cal = calendar.getInstance (); cal.setTime (data);
3. Formate a data e hora de saída
Data data = new Date (); SimpledateFormat df = new SimpleDateFormat ("AAAA-MM-DD HH: MM: SS"); System.out.println (df.format (data)); 4. Calcule que semana de ano
(1) Calcule que semana do ano é
Calendário cal = calendar.getInstance (); cal.set (calendário.year, 2006); cal.set (calendário.month, 9); cal.set (calendar.day_of_month, 3); int weekno = cal.get (calendar.week_of_year);
(2) Calcule que semana do ano é
SimpledateFormat df = new SimpleDateFormat ("AAAA-MM-DD"); Calendário cal = calendar.getInstance (); cal.set (calendário.year, 2006); cal.set (calendar.week_of_year, 1); cal.set (calendar.day_of_week, calendar.Monday); System.out.println (df.format (cal.gettime ()));Saída:
2006-01-02
5. Uso de add () e roll ()
(1) Método add ()
SimpledateFormat df = new SimpleDateFormat ("AAAA-MM-DD"); Calendário cal = calendar.getInstance (); cal.set (calendário.year, 2006); cal.set (calendário.month, 9); cal.set (calendar.day_of_month, 3); cal.add (calendário.date, -4); Data data = cal.gettime (); System.out.println (df.format (data)); cal.add (calendário.date, 4); date = cal.gettime (); System.out.println (df.format (data)); Saída:
2006-08-30
2006-10-03
(2) Método de rolo
cal.set (calendário.year, 2006); cal.set (calendário.month, 9); cal.set (calendar.day_of_month, 3); cal.roll (calendar.date, -4); date = cal.gettime (); System.out.println (df.format (data)); cal.roll (calendário.date, 4); date = cal.gettime (); System.out.println (df.format (data));
Saída:
2006-10-29
2006-10-03
Pode -se observar que o método roll () loops neste mês e o método add () geralmente é usado;
6. Calcule o número de dias entre dois tempos arbitrários
(1) Passando para o objeto de calendário
/*** // ** Calcule o número de dias entre duas vezes* @param Startday Startday Horário* @param final do dia de final* @return*/public int getIntervaldays (calendário inicial do dia, calendário final do dia) .. {// startday; Times respectivamente Sl long = startDay.getTimeInmillis (); long el = endday.gettimeinmillis (); LONG EI = EL-SL; // Calcule os dias de intervalo com base no retorno dos milissegundos (int) (EI/(1000*60*60*24));}(2) passando para o objeto de data
/*** // ** Calcule o número de dias entre duas vezes* @param Startday Start Horário* @param final do dia de final* @return*/public int getIntervaldays (data inicial, date fendday) ... {// startday; startday antes do dia de fim de dia (startday.after (endday)). sl = startDay.getTime (); long el = endday.gettime (); LONG EI = EL-SL; // Calcule os dias de intervalo com base no retorno dos milissegundos (int) (EI/(1000*60*60*24));}Da mesma forma, você pode usar o mesmo método para calcular o número de horas, minutos, segundos, etc. Nota: O método acima é calculado completamente com base no tempo e, às vezes, não é satisfatório, como:
StartDay = "2006-10-11 20:00:00" ENDDAY = "2006-10-12 8:00:00"
O resultado do cálculo é 0, mas podemos fazer com que o resultado do cálculo se torne 1. Nesse momento, podemos usar o seguinte método:
Antes de passar no argumento, defina o horário de fim de dia primeiro, como:
endday.set (calendar.hour_of_day, 23); endday.set (calendário.Minute, 59); endday.set (calendário.second, 59); ENDDAY.SET (Calendar.MillisEcond, 59);
Se você passar, o resultado será como desejarmos. No entanto, se você achar problemático o método acima, poderá consultar o seguinte método:
(3) melhorar o método de calcular com precisão o número de dias de intervalo
public int GetDaysBetween (Calendário D1, Calendário D2) ... {if (d1.After (d2)) ... {// Datas de troca para que D1 seja iniciado e d2 é final java.util.calendar swap = d1; d1 = d2; d2 = swap;} int = d.2get (calendário.Dear. 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 (calendário. d1.add (calendário.year, 1);} while (d1.get (calendário.year)! = y2);} Dias de retorno;}Obtenha o tempo atual do sistema:
public static String getSystemTime(){Date date=new Date();SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return df.format(date);}//Convert the string into a time type (the string can be any type, as long as it is the same as the format in SimpleDateFormat) 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"); Hh: mm: ss "); string mdateTime1 = formatter.format (d); // calendário cal = calendar.getInstance (); // simledateFormat formatter = new SimpleDateFormat (" yyyyy-mm-dd hh: mm: ss "); SimpleDateFormat Formatter = new SimpleDateFormat ("AAYYY-MM-DD HH: MM: SS GEDF W W A EF"); String mdateTime = Formatter.Format (Cal.Gettime ()); // 1 ano atrás Data Java.util.date Mydate = New Java.util.date () atrás; longo mytime = (mydate.gettime ()/1000) -60*60*24*365; mydate.setTime (mytime*1000); string mdate = formatter.format (mydate); // amanhã date mydate = novo java.util.date (); mytime = (mydate.getTime ()/1000)+60*60*24; mydate.setTime (myTime*1000); mdate = formatter.format (mydate); // o número de dias entre duas vezes simplificado. MyFormatter.Parse ("2003-05-1"); java.util.date mydate = myFormatter.parse ("1899-12-30"); longo dia = (date.gettime ()-mydate.getTime ())/(24*60*60); hh: mm: ss "); java.util.date date1 = format.parse (" 2002-02-28 23:16:00 "); longo tempo = (date1.gettime ()/1000)+60*30; date1.setTime (tempo*1000); string mydate1 = formatter.format (date1); // ano, mês, semana, data simpledAformatsMatat 5) 5 FORMATERATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATATA); formatter3 = new SimpleDateFormat ("yyyy-mm-dd"); string mydate2 = format3.format (date2); // encontre o dia da semana mydate = myformatter.parse ("2001-1-1"); simledateformat formatter4 = new simpledateFormat ("e"); string "); simledAmat Formatter4 = novo simpledate (" e "); string;No desenvolvimento de aplicativos da Web, precisamos fazer várias conversões diferentes até os tipos de data em nosso programa para diferentes tipos de data do banco de dados. Se os dados do banco de dados correspondentes forem o tipo de data do Oracle, ou seja, apenas o ano, o mês e o dia forem necessários, você poderá optar por usar o tipo java.sql.date. Se os dados correspondentes do banco de dados forem o tipo de data do banco de dados MSSQLServer, ou seja, o ano, mês, dia, hora, minuto e segundo são necessários, selecione o tipo java.sql.timestamp do tipo
Você pode usar o DateFormat para definir o formato de tempo e data e transformá -lo em uma string
pacote pessoal.jessica; importar java.util.date; importar java.util.calendar; importar java.sql.timestamp; importar java.text.dateFormat; importar java.text.simpledFormat; importar java.util.locale para o timeTest {/** conversando ** ** ** ** ** ** ** ** ** ** ** ** MethodEsts Inversor; java.sql.timestamp) *@param datestring string que precisa ser convertida em registro de data e hora *@retorna datatime timestamp */public final estático java.sql.timestamp string2time (string dateSTring) lança java.text.parseException {dateFormat Date; dateFormats) KK: mm: ss.sss ", Locale.english); // Definir formato // dateFormat = new SimpleDateFormat (" AA YYYY-MM-DD KK: MM: SS ", Locale.English); dateFormat.SetLenient (false); java.util.date timedate = dateFormat.parse (DATEstring); // utilize java.sql.timestamp dateTime = new Java.SQL.Timestamp (timedate.gettime); Digite para uma data (java.sql.date) *@param datestring a string que precisa ser convertida até data *@retorna datatime data */public final estático java.sql.date string2date (string datestring) lança java.lang.exception {dateFormat; dateformaty, novo simplateFormat (yyyyMerMM) Locale.English); DateFormat.SetLenient (false); java.util.date timedate = dateFormat.parse (DATEstring); // util type java.sql.date datetime = new java.sql.date (timedate.gettime (); // sqlet Return datetime; DATE (); // Nota: Neste local, Da.getTime () obtém um System.out.println de valor longo (da.getTime ()); // converte de data para registro de data e hora // o primeiro método: use novo registro de data e hora (long) timestamp t = novo timestamp (new Date (). GetTime ()); System.out.println (t); // O segundo método: use Timestamp (int ano, int mês, data int, int hora, int minuto, int, segundo, int nano) Timestamp tt = novo timestamp (calendar.getInstance (). Calendar.date), calendar.getInstance (). Get (calendar.hour), calendar.getInstance (). Get (calendar.Minute), calendar.getInstance (). java.sql.date stotimestamp = "2005-8-18 14: 21: 12.123"; // string standle usada para converter para java.sql.timestamp date1 = string2date (stodate); timestamp date2 = stringtime (stotimestamp); system.out.printlnnnnnnnnnnnnnn (timestamp date2 = stringtime (stotimestamp); system.out.printlnnnnnnnnnnnnnn; converter em java.sql.timestamp date1 = string2date (stotimestamp); system.out.println ("date:"+date2.toString ()); // string standle usada para converter em java.sql.timestamp date2 = String2Time (STOTIMESTAMP); System.out.println ("Timestamp:"+Date2.ToString ()); // Standle tostack} catch (Exceção e) {E.printStackTrace ();}}}}Aqui está um exemplo:
Código Java
teste de pacote; importar java.text.dateFormat; importar java.text.parseException; importar java.text.simpledateFormat; importar java.util.calendar; import java.util.date; importen) java.util.hashtable; import javax.util.JOPPTYPANE; a [] = s.split ("-"); boolean flg = true; if (! (Integer.parseInt (a [0])> = 1950 && Integer.parseInt (a [0]) <= 2050)) {Flg = false;} retornar Flg;} public static boolean »check (string s) {string; SimpledateFormat ("AAAA-MM-DD"); ret = df.Format (df.parse (s)). Iguals (s);} catch (parseException e) {ret = false;} return ret;} public object dateInfo (string s) {string a [] = s.split ("-" 2); Hashtable (); fest.put ("01-01", "Dia do Ano Novo"); Fest.put ("02-14", "Dia dos Namorados"); Fest.put ("03-12", "Arbor Day"; Fest.put ("03-15", dia do dia "); fest.put (" 04-01 "," 03-15 ", dia do dia"); Fest.put ("04-01", "03-15" Festival "); fest.put (" 05-01 "," dia do trabalho "); fest.put (" 06-01 "," dia infantil "); fest.put (" 07-01 "," centralizando o dia da festa "); Fest.put (" 08-01 "," dia do exército "); fest.put (" 09-10 "" "" "" 08-01 "," Day ""); Fest.put ("09-10" "" "", "" 08-01 "," Day "); Fest.put (" 09-10 "", "" Dia "); fest.put (" 12-25 "," natal "); if (fest.containsKey (a [1])) {return fest.get (a [1]);} else {return" sem férias ";}}} string xingzuo (data s) {calendar calendar.getinStance (); dia = 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 (dia> = 1 && dia <= 19) || (dia> = 357 && dia <= 366)) {xingzuo = "escorpião";} else if (dia> = 20 && dia <= 49) {xingzuo = "aquarius";} else (dia> = 50 && dia <= 80) {xingzuo = "pis"; && dia <= 110) {xingzuo = "Aries";} else if (dia> = 111 && dia <= 141) {xingzuo = "taurus";} else if (dia> = 142 && dia <= 173) {xingzuo = "gemini;} else se (dia> 174442; if (dia> = 204 && dia <= 235) {xingzuo = "leo";} else if (dia> = 236 && dia <= 266) {xingzuo = "virgo";} else (dia> = 267 && dia <= 296) {xingzuo = "libra"; && dia <= 326) {xingzuo = "escorpião";} else if (dia> = 327 && dia <= 356) {xingzuo = "sauvignon";}} {if (if (dia> = 1 && dia <= 19) || (dia> = 357 && dia <= 366)) if (dia> = 20 && dia <= 48) {xingzuo = "aquarius";} else if (dia> = 49 && dia <= 79) {xingzuo = "pisces";} else (dia> = 80 && dia <= 109) {xingzUo = "Ries";}; "Taurus";} else if (dia> = 141 && dia <= 172) {xingzuo = "gemini";} else if (dia> = 173 && dia <= 202) {xingzuo = "câncer";} se (dia> = 20 e dia <= 234) {Xingoo "; && dia <= 265) {xingzuo = "virgo";} else if (dia> = 266 && dia <= 295) {xingzuo = "libra";} else (dia> = 296 && dia <= 325) {xingzuo = "escorpado";} se (dia> "Saucy";}} retorna xingzuo;} data pública parsedate (strings s) {simpledEformat BartdateFormat = new SimpleDateFormat ("yyyyy-mm-dd"); Extemp (date 3 date3 = BartdateFormat.Par (s); Date3 = Date) (date) (date3 = bartdateFormat.Par (s); Date3 = Date) (date 3) null;}} public static void main (string [] args) {calendar cal = calendar.getInstance (); test2 test2 = new test2 (); string date1 = joptionpane.showinputDialog ("digite a data, o formato é como 2000-10-15"); while (! (test2.checkdate (date1) && test2.isdate (date1))) {date1 = joptionPane.showInputDialog ("Por favor, digite a data, o formato é como 2000-10-15");} simledEformat barttate1 = newledateFormat ("yyyyyyyyyyyyyyy, mmmen; new SimpleDateFormat ("AAAA-MM-DD"); Data Date2 = test2.Parsedate (Date1); String FestInfo = (String) Test2.DateInfo (Date1); System.out.println (BartDateFormat1.Format (Date2)+""+Festinfo+"", "+TESTENCHILT1.XING1. Dia = JoptionPane.showInputDialog ("Por favor, insira as informações da data para consultar n dias"); cal.setTime (date2); cal.add (calendar.date, Integer.parseint (dia)); String Date5 = BartdateFormat2.Format (Cal.Gettime ()); FestInfo = (String) Test2.DateInfo (Date5); System.out.println (BartdateFormat1.Format (Cal.gettime ())+","+Festinfo+","+Test2.xingzuo (cal.gettime) ()), "+festinfo", "+Test2.xingzuo (cal.get) ()),"+festinfo+","+)Resumir
O exposto acima é toda a explicação detalhada da hora do Java e do uso de datas e do código de consulta neste artigo. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!