Meu aplicativo Android quer exibir uma seqüência de data e hora e a cadeia de formato correspondente. Ele usa o SimpleDateFormat porque ele é compatível com os níveis de API do Android idade.
Calendar calendar=Calendar.getInstance();
formatString=getTheCurrentLocaleDateTimeFormatString();
SimpleDateFormat dateFormat = new SimpleDateFormat(formatString);
localeTimeString= dateFormat.format(calendar.getTimeInMillis());
displayToTheUser(localeTimeString);
displayToTheUser(formatString);
por exemplo, o usuário recebe: "Qua, 04 de julho de 2001 0:08:56" e "EEE, d MMM aaaa HH: mm: ss"
O trecho de código fornecido tem a intenção de obter o formulário de data e hora de acordo com a localidade, mas eu não sei como obtê-lo também como uma seqüência de formato. Deve ser calculado pelo método getTheCurrentLocaleDateTimeFormatString () acima.
Vejo que muitos padrões da corda do formato estão disponíveis.
Esta é a página de documentação relevante:
https://developer.android.com/reference/java/text/SimpleDateFormat#examples
Sendo que eu quero mostrar que string de formato para o usuário como um modelo e usá-lo como um parâmetro para SimpleDateFormat minha pergunta é: como faço para obter a cadeia de formato padrão de data e hora de localidade do atual?
Você pode fazê-lo da seguinte forma:
SimpleDateFormat getTheCurrentLocaleDateTimeFormatString() {
return (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
}
Um programa de teste:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = getTheCurrentLocaleDateTimeFormatString();
String localeTimeString = dateFormat.format(calendar.getTimeInMillis());
System.out.println(localeTimeString);
}
static SimpleDateFormat getTheCurrentLocaleDateTimeFormatString() {
return (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
}
}
Resultado:
Sunday, 12 January 2020
[Atualizar]
Postando o seguinte código com base em seu comentário:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
String formatString=getTheCurrentLocaleDateTimeFormatString();
System.out.println(formatString);
SimpleDateFormat dateFormat = new SimpleDateFormat(formatString);
String localeTimeString= dateFormat.format(calendar.getTimeInMillis());
System.out.println(localeTimeString);
}
static String getTheCurrentLocaleDateTimeFormatString() {
return ((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault())).toLocalizedPattern();
}
}
Resultado:
EEEE, d MMMM y
Sunday, 12 January 2020
[Outro update]
Postando o código a seguir com base no seu outro comentário:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
String formatString = getTheCurrentLocaleDateTimeFormatString();
System.out.println(formatString);
SimpleDateFormat dateFormat = new SimpleDateFormat(formatString);
String localeTimeString = dateFormat.format(calendar.getTimeInMillis());
System.out.println(localeTimeString);
}
static String getTheCurrentLocaleDateTimeFormatString() {
return ((SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,
Locale.getDefault())).toLocalizedPattern();
}
}
Resultado:
EEEE, d MMMM y 'at' HH:mm:ss zzzz
Sunday, 12 January 2020 at 20:28:05 Greenwich Mean Time