Por exemplo, tenho a data: "23/2/2010" (23 de fevereiro de 2010). Quero passar para uma função que retornaria no dia da semana . Como posso fazer isso?
Neste exemplo, a função deve retornar String
"Ter".
Além disso, se apenas o dia ordinal é desejado, como isso pode ser recuperado?
Calendar
classe, comoCalendar.SUNDAY
ouCalendar.JANUARY
.Calendar
,Date
eDateTimeFormat
(e Joda tempo também) e usar as Java 8java.time
aulas, por exemploYearMonth
ouLocalDate
. Veja mais nesta resposta .java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 & Java 9. Consulte Tutorial pela Oracle .Use este código para encontrar o nome do dia a partir de uma data de entrada. Simples e bem testado.
fonte
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 & Java 9. Consulte Tutorial pela Oracle .Basta usar SimpleDateFormat .
O resultado é: sáb, 28 dez 2013
O construtor padrão está usando o código de idioma "padrão" , portanto, tenha cuidado ao usá-lo quando precisar de um padrão específico.
fonte
tl; dr
Usando java.time …
Veja este código executado ao vivo no IdeOne.com (mas
Locale.US
funciona apenas lá).java.time
Veja meu código de exemplo acima e a resposta correta para java.time do Przemek .
Número ordinal
Para o número ordinal, considere passar o
DayOfWeek
objeto enum em vez disso, comoDayOfWeek.TUESDAY
. Lembre-se de que aDayOfWeek
é um objeto inteligente, não apenas uma string ou um mero número inteiro. O uso desses objetos enum torna seu código mais auto-documentado, garante valores válidos e fornece segurança de tipo .Mas se você insistir, peça
DayOfWeek
um número . Você recebe de 1 a 7 de segunda a domingo, de acordo com o padrão ISO 8601 .Joda-Time
ATUALIZAÇÃO: O projeto Joda-Time agora está no modo de manutenção. A equipe aconselha a migração para as classes java.time. A estrutura java.time é integrada ao Java 8 (além de ser portada para o Java 6 e 7 e adaptada ao Android ).
Aqui está um código de exemplo usando a versão 2.4 da biblioteca Joda-Time , conforme mencionado na resposta aceita pelo Bozho . O Joda-Time é muito superior às classes java.util.Date/.Calendar incluídas no Java.
LocalDate
O Joda-Time oferece à
LocalDate
classe que represente apenas uma data, sem horário ou fuso horário. Exatamente o que esta pergunta exige. As antigas classes java.util.Date/.Calendar incluídas no Java não possuem esse conceito.Analisar
Analise a sequência em um valor de data.
Extrair
Extraia do valor da data o número e o nome do dia da semana.
Despejo
Despejar no console.
Corre
Quando correr.
Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como
java.util.Date
,Calendar
, eSimpleDateFormat
.O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Para saber mais, consulte o Tutorial do Oracle . E procure Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
Onde obter as classes java.time?
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de prova para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como
Interval
,YearWeek
,YearQuarter
, e mais .fonte
java.time
Usando
java.time
estrutura incorporada no Java 8 e posterior.O enum pode gerar uma String do nome do dia automaticamente localizada na linguagem humana e nas normas culturais de a . Especifique a para indicar que deseja um formulário longo ou um nome abreviado.
DayOfWeek
Locale
TextStyle
fonte
Você pode tentar o seguinte código:
fonte
LocalDate
? Você os leu antes de postar?fonte
Para Java 8 ou posterior , localdate é preferível
Nota: se a entrada for String / User definida, você deve analisá-la em int .
fonte
fonte
Outra maneira "divertida" é usar o algoritmo do Dia do Juízo Final . É um método muito mais longo, mas também é mais rápido se você não precisar criar um objeto Calendário com uma determinada data.
fonte
Pode usar o seguinte trecho de código para entrada como (dia = "08", mês = "05", ano = "2015" e a saída será "QUARTA-FEIRA")
fonte
Resposta em uma linha:
Exemplo de uso:
fonte
fonte
fonte
Há um desafio no hackerrank Java Date and Time
pessoalmente, prefiro a classe LocalDate.
Há um vídeo sobre esse desafio.
Solução Java Hackerrank de Data e Hora
Eu espero que isso ajude :)
fonte
Calendar
classe, observe que oset
método no Calendário leva meses a partir de 0. ie0 for January
,. Obrigado!Adicionando outra maneira de fazer exatamente o que o OP solicitava, sem usar os métodos mais recentes:
fonte
SimpleDateFormat
eDate
. Em particular, você não deve usar ogetDay
método reprovado , ele não é confiável. E você não deve usarif
-else
para selecionar entre 7 valores, é isso que temosswitch
, ou você pode usar uma matriz. Em resumo, seu código é mais longo e mais complicado do que precisa.fonte
Programe para encontrar o dia da semana, fornecendo a data de entrada do usuário mês e ano usando o
java.util.scanner
pacote:fonte
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 & Java 9. Consulte Tutorial pela Oracle .if ((ym%4==0) && (gm==2)){ d=(gd+m[gm-1]+ym+yp+y[a]-1)%7;
Obtenha o valor do dia fornecendo o carimbo de hora atual.
fonte
fonte
O método abaixo recupera sete dias e retorna o nome abreviado dos dias na Lista de matriz no Kotlin; no entanto, você pode reformatar e depois no formato Java, apenas apresentando uma idéia de como o Calendar pode retornar o nome abreviado.
colocar resultados como
fonte
Calendar
classe em 2019. Ela é mal projetada e desatualizada há muito tempo. Em vez disso, recomendoLocalDate
eDayOfWeek
de java.time, a moderna API de data e hora de Java .Você pode usar o método abaixo para obter o dia da semana passando uma data específica,
Aqui para o método definido da classe Calendar, Tricky part é o índice para o parâmetro do mês que começa em 0 .
fonte
A classe Calendar tem a funcionalidade displayName incorporável:
Disponível desde o Java 1.6. Consulte também a documentação do Oracle
fonte
Isso funciona corretamente ...
Ele fornece o método interno getDayOfWeek () para obter o dia de uma semana específica:
Para atribuir o valor de enum
l.getDayOfWeek()
a uma string, você provavelmente poderia usar o método de Enum chamadoname()
que retorna o valor do objeto enum.fonte
listHolidays.add(LocalDate.of(year, 1, 1));
à resposta. Se você quiser melhorar a resposta, adicione sua própria. Espero que ajude #Abaixo, estão as duas linhas de snippet usando a API Java 1.8 Time para seu requisito.
fonte