Este artigo compartilha métodos comuns de operação de tempo do calendário, o conteúdo específico é o seguinte
teste de pacote; importar java.text.simpledateFormat; importar java.util.calendar; importar java.util.date;/** * métodos comuns de data e calendário, muitos métodos de data foram depreciados, então o calendário é o principal que é o principal. {// Use diretamente a data para obter o horário atual do sistema, resultado: Ter 03 de maio 08:25:44 CST 2016Date Date = new Date (); // Muitos métodos em data, como obter um determinado ano, mês, dia etc. e definir um determinado ano, dia, dia, etc., não são mais recomendados. // Recomenda -se usar vários métodos de calendário, para que nenhum registro seja feito // obtenha os milissegundos da data especificada, que geralmente é usada para comparar os tamanhos de duas datas. date.getTime (); // Use o calendário para obter o tempo atual do sistema. Você precisa obter o objeto do calendário e convertê -lo em data do calendário do calendário de saída = calendário.getInstance (); // Este método é equivalente ao tempo de entrada e obtenha os milissegundos da atual calendária de tempo.gettimeInmillis (); // Obtenha a data do primeiro dia da semana onde a data especificada é. O primeiro dia da semana padrão é o calendário de domingo. Ano, mês e dia Resultado da produção: Seg 03 de junho 09:31:59 CST 2013 // Relacionado Métodos sobrecarregados comumente usados: calendário.set (ano, mês, data, hora de hora, minuto); // calendar.set (ano, mês, data, hora de hora, dia, segundo); Todos os parâmetros são intcalendar.set (2013, 5, 3); System.out.println (calendar.gettime ()); // use o calendário para definir o ano, resultado da saída: sex 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 ()); // Defina o mês com o calendário e suas próprias constantes, observe que o mês começa em 0, representando janeiro, resultado de saída: thu Feb. Calendar.febrovery); system.out.println (calendar.gettime ()); // Defina o dia com calendário e números, resultado da saída: Sáb 05 05 09:48:25 CST 2011 // calendar.set (calendar.day_of_month, 5) O resultado é o mesmo; 5); system.out.println (calendar.gettime ()); // Defina o calendário de hora.set (calendar.hour, 15); system.out.println (calendar.gettime ()); // define o tempo do calendário de acordo com o número de milissegundos do dia. Fordate = DATEToString (new Date ()); System.out.println (Fordate); // String até a data, resultado da saída: qui 12 13:23:11 CST 2015Date strdate = StringTodate ("2015-11-12 13:23:11"); DateTocalendar (strdate); system.out.println (calendar2.get (1));}/*** Converta o tempo de tipo de data especificado em uma string no formato especificado** @author: tUzongxun* @title: DATETOSTRING* @param @param: date* @Tit. DateToString (data de data) {String str = "AAAA-MM-DD HH: MM: SS"; SimpleDateFormat Format = new SimpleDateFormat (str); string dateFormat = format.format (date); dateFormat;}/*** Convert na string especificada no formato de data *zeTeT *z. @param string* @return void* @date 3 de maio de 2016 9:16:38 am* @lança*/date static stringtodate (string string) {string str = "yyyy-mm-dd hh: mm: ss"; simpledFormat format = new SimpledateFormat (str); date (); {E.GetStackTrace ();} Data de retorno;}/*** Converta a data de data especificada Data para o tipo de calendário** @Author: TUZONGXUN* @Title: DateTocalendar* @param @param date* @return void* @date maio 3, 2016 9:13:49 AM @SlowS*/Ston/Ston/Stoin Calendar.getInstance (); calendar.setTime (data); retorno calendário;}}Que outras armadilhas existem?
Onde está o poço:
Em um projeto que me deparei antes, envolvi uma função: mova alguns dados para outra coleção de bancos de dados MongoDB todos os dias, ou seja, as tabelas do banco de dados relacional. Este nome de coleção é um nome fixo mais o ano e o mês em que a data atual de dois meses atrás está localizada.
Essa função existia antes de eu entrar em contato com este projeto, que é uma função implementada pelos meus colegas anteriores, e escreveu uma tarefa de tempo de Java.
Esse colega não está mais em nossa empresa, mas recentemente ele descobriu que essa função tem alguns problemas. O movimento dos dados não é o esperado. Os dados que deveriam ter existido em fevereiro apareceram na tabela de janeiro.
A raiz do poço:
Os problemas relacionados ao MongoDB são mantidos temporariamente por mim, e esse problema naturalmente precisa ser resolvido por mim, então peguei seu código e o li. Como resultado, o problema foi considerado os métodos relevantes do calendário.
Para transferir dados de dois meses atrás, você deve primeiro obter a data de dois meses atrás. O código relevante para gerar o nome da tabela é o seguinte:
private string getDatacollectionName () {calendário calendário = calendar.getInstance (); tente {calendar.set (calendar.date, -day); return "alarm_" + toolutils.dateToFormatstrdate (calendar.gettime (), "yyyy_mm"); } catch (Exceção e) {Logger.error ("{}: transformando os dados falhou, {}", this.getclass (). getName (), e.getMessage ()); } retornar nulo; }O problema está no método de calendário definido, incluindo o horário de início e término dos dados de consulta posteriormente, e o mesmo é usado é calendário.set (calendar.date, -day);
À primeira vista, esse método parece definir a data para a data atual menos o número especificado de dias, mas, na verdade, o resultado não é o mais esperado, como você obteria a data há dois meses (o dia aqui define 60, ou seja, dois meses).
Preencha o poço:
Depois de encontrar o motivo, substituí esse método e alterei o conjunto para adicionar. Quanto aos parâmetros para dentro, ele não foi movido. O resultado provou que esse método pode realmente realizar a função atual e o resultado obtido é exatamente o resultado esperado.
Obviamente, você também pode alterar ligeiramente os parâmetros sem alterar o método, como calendário.set (calendário.date, calendário.get (calendar.date) -day);
O exposto acima é tudo sobre este artigo, e espero que seja útil que todos dominem os métodos comuns da operação de tempo do calendário.