Android에서 날짜와 시간을 포맷하는 방법은 무엇입니까?
년, 월, 일, 시간 및 분이 있을 때 장치 구성 날짜와 시간에 따라 올바르게 포맷하는 방법은 무엇입니까?
표준 Java DateFormat 클래스를 사용합니다.
예를 들어 현재 날짜와 시간을 표시하려면 다음을 수행합니다.
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
사용자 고유의 값으로 Date 개체를 초기화할 수 있지만 생성자가 더 이상 사용되지 않으므로 Java Calendar 개체를 사용해야 합니다.
제 생각에는,android.text.format.DateFormat.getDateFormat(context)
이 방법이 되돌아오기 때문에 나를 혼란스럽게 합니다.java.text.DateFormat
보다는android.text.format.DateFormat
- -".
그래서 저는 아래와 같은 fragment 코드를 사용하여 현재 날짜/시간을 제 형식으로 가져옵니다.
android.text.format.DateFormat df = new android.text.format.DateFormat();
df.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
or
android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
또한 다른 형식을 사용할 수 있습니다.날짜 형식을 따릅니다.
사용할 수 있습니다.DateFormat
결과는 전화기의 기본 로케일에 따라 다르지만 로케일도 지정할 수 있습니다.
https://developer.android.com/reference/java/text/DateFormat.html
다음은 다음에 대한 결과입니다.
DateFormat.getDateInstance().format(date)
FR 로케일 : 2017년 11월 3일
미국/En 로케일: 1952년 1월 12일
DateFormat.getDateInstance(DateFormat.SHORT).format(date)
FR 로케일 : 2017년 3월 11일
미국/En 로케일: 12.13.52
DateFormat.getDateInstance(DateFormat.MEDIUM).format(date)
FR 로케일 : 2017년 11월 3일
미국/En 로케일: 1952년 1월 12일
DateFormat.getDateInstance(DateFormat.LONG).format(date)
FR 로케일 : 2017년 11월 3일
미국/En 로케일 : 1952년 1월 12일
DateFormat.getDateInstance(DateFormat.FULL).format(date)
FR 로케일 : vendredi 3 2017년 11월
미국/En 로케일: 1952년 4월 12일 화요일
DateFormat.getDateTimeInstance().format(date)
FR 로케일 : 2017년 11월 3일 16:04:58
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date)
FR 로케일 : 03/11/2017 16:04
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(date)
FR 로케일 : 03/11/2017 16:04:58
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG).format(date)
FR 로케일 : 03/11/2017 16:04:58 GMT+01:00
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.FULL).format(date)
FR 로케일 : 03/11/2017 16:04:58 heure normal d'Europe central
DateFormat.getTimeInstance().format(date)
FR 로케일 : 16:04:58
DateFormat.getTimeInstance(DateFormat.SHORT).format(date)
FR 로케일 : 16:04
DateFormat.getTimeInstance(DateFormat.MEDIUM).format(date)
FR 로케일 : 16:04:58
DateFormat.getTimeInstance(DateFormat.LONG).format(date)
FR 로케일 : 16:04:58 GMT+01:00
DateFormat.getTimeInstance(DateFormat.FULL).format(date)
FR 로케일 : 16:04:58 heure normal d'Europe central
날짜를 로케일 날짜 문자열로:
Date date = new Date();
String stringDate = DateFormat.getDateTimeInstance().format(date);
옵션:
DateFormat.getDateInstance()
> 1969년 12월 31일
DateFormat.getDateTimeInstance()
-> 1969년 12월 31일 오후 4:00:00
DateFormat.getTimeInstance()
-> 오후 4:00:00
날짜 및 시간 형식 설명
EEE : Day ( Mon )
MMMM : Full month name ( December ) // MMMM February
MMM : Month in words ( Dec )
MM : Month ( 12 )
dd : Day in 2 chars ( 03 )
d: Day in 1 char (3)
HH : Hours ( 12 )
mm : Minutes ( 50 )
ss : Seconds ( 34 )
yyyy: Year ( 2020 ) //both yyyy and YYYY are same
YYYY: Year ( 2020 )
zzz : GMT+05:30
a : ( AM / PM )
aa : ( AM / PM )
aaa : ( AM / PM )
aaaa : ( AM / PM )
이렇게 하면 됩니다.
Date date = new Date();
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
단순 날짜 형식 사용
다음과 같이:
event.putExtra("starttime", "12/18/2012");
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date date = format.parse(bundle.getString("starttime"));
가장 간단한 방법은 다음과 같습니다.
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.US);
String time = df.format(new Date());
그리고 패턴을 찾고 있다면, 이 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 을 확인하세요.
다음을 수행합니다. http://developer.android.com/reference/android/text/format/Time.html
Android 기본 시간 클래스를 사용하는 것이 더 좋습니다.
Time now = new Time();
now.setToNow();
그런 다음 형식:
Log.d("DEBUG", "Time "+now.format("%d.%m.%Y %H.%M.%S"));
다음 두 가지를 클래스 변수로 사용합니다.
public java.text.DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
private Calendar mDate = null;
다음과 같이 사용합니다.
mDate = Calendar.getInstance();
mDate.set(year,months,day);
dateFormat.format(mDate.getTime());
이것은 나의 방법이며, 당신은 정의하고 입력하고 출력할 수 있습니다.
public static String formattedDateFromString(String inputFormat, String outputFormat, String inputDate){
if(inputFormat.equals("")){ // if inputFormat = "", set a default input format.
inputFormat = "yyyy-MM-dd hh:mm:ss";
}
if(outputFormat.equals("")){
outputFormat = "EEEE d 'de' MMMM 'del' yyyy"; // if inputFormat = "", set a default output format.
}
Date parsed = null;
String outputDate = "";
SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault());
SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault());
// You can set a different Locale, This example set a locale of Country Mexico.
//SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, new Locale("es", "MX"));
//SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, new Locale("es", "MX"));
try {
parsed = df_input.parse(inputDate);
outputDate = df_output.format(parsed);
} catch (Exception e) {
Log.e("formattedDateFromString", "Exception in formateDateFromstring(): " + e.getMessage());
}
return outputDate;
}
단순 날짜 형식
사용자 지정 패턴이 없는 SimpleDateFormat을 사용하여 시스템에서 장치의 사전 선택된 형식으로 실제 날짜와 시간을 가져옵니다.
public static String getFormattedDate() {
//SimpleDateFormat called without pattern
return new SimpleDateFormat().format(Calendar.getInstance().getTime());
}
반환:
- 13.01.15 11:45
- 1/13/15 오전 10:45
- ...
날짜 형식 수업은 날짜를 만들기 위해 치트 코드로 작업합니다. 마치
- M -> 7, MM -> 07, MMM -> Jul, MMMM -> 7월
- EEE -> 화, EEE -> 화요일
- z -> EST, zzz -> EST, zzz -> 동부 표준시
여기서 더 많은 부정행위를 확인하실 수 있습니다.
빌드 인 타임 클래스를 사용합니다!
Time time = new Time();
time.set(0, 0, 17, 4, 5, 1999);
Log.i("DateTime", time.format("%d.%m.%Y %H:%M:%S"));
이 코드는 나에게 효과가 있습니다!
Date d = new Date();
CharSequence s = android.text.format.DateFormat.format("MM-dd-yy hh-mm-ss",d.getTime());
Toast.makeText(this,s.toString(),Toast.LENGTH_SHORT).show();
최단 경로:
// 2019-03-29 16:11
String.format("%1$tY-%<tm-%<td %<tR", Calendar.getInstance())
%tR
는 의줄말임의 줄임말입니다.%tH:%tM
,<
하는 방법(last parameter)1$
).
이에 해당합니다.String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
다른 답들은 일반적으로 맞습니다.저는 현대적인 답변에 기여하고 싶습니다. 수업들은Date
,DateFormat
그리고.SimpleDateFormat
대부분의 다른 답변에 사용되는 것은 오래 전에 구식이며 수년간 많은 프로그래머들에게 문제를 일으켰습니다.오늘날 우리는 훨씬 더 나은 것을 가지고 있습니다.java.time
최신 Java 날짜 및 시간 API, 일명 JSR-310입니다.당신은 아직 안드로이드에서 이것을 사용할 수 있습니까?물론이죠!현대 클래스는 ThreeTenABP 프로젝트에서 Android로 역포팅되었습니다.다음 질문을 참조하십시오. 쓰리텐 사용법모든 세부 정보를 보려면 Android Project의 ABP를 참조하십시오.
이 토막글을 사용하면 시작할 수 있습니다.
int year = 2017, month = 9, day = 28, hour = 22, minute = 45;
LocalDateTime dateTime = LocalDateTime.of(year, month, day, hour, minute);
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
System.out.println(dateTime.format(formatter));
컴퓨터의 기본 설정 언어를 미국 영어 또는 영국 영어로 설정하면 다음이 인쇄됩니다.
Sep 28, 2017 10:45:00 PM
대신 덴마크어로 설정하면 다음과 같은 메시지가 표시됩니다.
28-09-2017 22:45:00
따라서 구성을 따릅니다.그러나 장치의 날짜 및 시간 설정을 따르는 세부 정보가 정확히 무엇인지는 잘 모르겠습니다. 전화기마다 다를 수 있습니다.
이 코드는 현재 날짜와 시간을 반환합니다.
public String getCurrDate()
{
String dt;
Date cal = Calendar.getInstance().getTime();
dt = cal.toLocaleString();
return dt;
}
다음과 같이 사용합니다.
public class DateUtils {
static DateUtils instance;
private final DateFormat dateFormat;
private final DateFormat timeFormat;
private DateUtils() {
dateFormat = android.text.format.DateFormat.getDateFormat(MainApplication.context);
timeFormat = android.text.format.DateFormat.getTimeFormat(MainApplication.context);
}
public static DateUtils getInstance() {
if (instance == null) {
instance = new DateUtils();
}
return instance;
}
public synchronized static String formatDateTime(long timestamp) {
long milliseconds = timestamp * 1000;
Date dateTime = new Date(milliseconds);
String date = getInstance().dateFormat.format(dateTime);
String time = getInstance().timeFormat.format(dateTime);
return date + " " + time;
}
}
로캘
날짜 또는 시간을 로케일 형식으로 밀리초 단위로 가져오기 위해 다음을 사용했습니다.
날짜 및 시간
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault());
dateFormat.format(date);
날짜.
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
dateFormat.format(date);
시간을
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());
dateFormat.format(date);
다른 날짜 스타일과 시간 스타일을 사용할 수 있습니다.스타일에 대한 자세한 내용은 여기를 참조하십시오.
시도:
event.putExtra("startTime", "10/05/2012");
전달된 변수에 액세스하는 경우:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(bundle.getString("startTime"));
j.u를 피하세요.날짜.
Java.util.날짜 및 .Java(및 Android)의 Calendar 및 SimpleDateFormat은 문제가 되기로 악명 높습니다.그들을 피하세요.Sun/Oracle이 이들을 포기하고 Java 8의 새로운 java.time 패키지(2014년 현재 Android 버전이 아님)로 대체했습니다.그 새로운 것은 Joda-Time 라이브러리에서 영감을 받았습니다.
조다 타임
Joda-Time은 Android에서 작동합니다.
StackOverflow에서 "Joda"를 검색하여 많은 예제와 많은 토론을 찾습니다.
Joda-Time 2.4를 사용한 약간의 소스 코드.
표준 형식.
String output = DateTime.now().toString();
// Current date-time in user's default time zone with a String representation formatted to the ISO 8601 standard.
지역화된 형식.
String output = DateTimeFormat.forStyle( "FF" ).print( DateTime.now() );
// Full (long) format localized for this user's language and culture.
2016년으로 돌아가서 (장치 구성에 따라가 아니라) 형식을 사용자 지정하려는 경우 주로 다음 문자열 리소스 파일을 사용합니다.
strings.xml:
<string name="myDateFormat"><xliff:g id="myDateFormat">%1$td/%1$tm/%1$tY</xliff:g></string>
활동 중:
Log.d(TAG, "my custom date format: "+getString(R.string.myDateFormat, new Date()));
이 기능은 새 날짜 바인딩 라이브러리의 릴리스에서도 유용합니다.
레이아웃 파일에 다음과 같은 내용을 저장할 수 있습니다.
<TextView
android:id="@+id/text_release_date"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{@string/myDateFormat(vm.releaseDate)}"
tools:text="0000"
/>
그리고 자바 클래스에서는:
MovieDetailViewModel vm = new MovieDetailViewModel();
vm.setReleaseDate(new Date());
Android Time 클래스는 3가지 포맷 방법을 제공합니다. http://developer.android.com/reference/android/text/format/Time.html
제가 한 일은 다음과 같습니다.
/**
* This method will format the data from the android Time class (eg. myTime.setToNow()) into the format
* Date: dd.mm.yy Time: hh.mm.ss
*/
private String formatTime(String time)
{
String fullTime= "";
String[] sa = new String[2];
if(time.length()>1)
{
Time t = new Time(Time.getCurrentTimezone());
t.parse(time);
// or t.setToNow();
String formattedTime = t.format("%d.%m.%Y %H.%M.%S");
int x = 0;
for(String s : formattedTime.split("\\s",2))
{
System.out.println("Value = " + s);
sa[x] = s;
x++;
}
fullTime = "Date: " + sa[0] + " Time: " + sa[1];
}
else{
fullTime = "No time data";
}
return fullTime;
}
그게 도움이 되길 바랍니다 :-)
너무 늦었지만 누군가에게 도움이 될 수도 있습니다.
DateFormat.format(format, timeInMillis);
여기서format
입니다.
ex: "HH:mm"는 15:30을 반환합니다.
날짜 - 유형
[Formatting and parsing date Times as strings][1]
EEE : Day ( Mon )
MMMM : Full month name ( December )
MMM : Month in words ( Dec )
MM : Month ( 12 )
dd : Day in 2 chars ( 03 )
d: Day in 1 char (3)
HH : Hours ( 12 )
mm : Minutes ( 50 )
ss : Seconds ( 34 )
yyyy: Year ( 2022 )
YYYY: Year ( 2022 )
zzz : GMT+05:30
a : ( AM / PM )
aa : ( AM / PM )
aaa : ( AM / PM )
aaaa : ( AM / PM )
언급URL : https://stackoverflow.com/questions/454315/how-to-format-date-and-time-in-android
'source' 카테고리의 다른 글
누군가 SQL 쿼리를 저작권으로 보호할 수 있습니까? (0) | 2023.07.24 |
---|---|
쿼리를 사용하여 VIEW ddl 가져오기 (0) | 2023.07.24 |
하위 쿼리를 사용하여 SQL 쿼리를 변환하는 방법을 선택합니다.NET Core 쿼리 (0) | 2023.07.24 |
JavaScript 문서입니다.AJAX를 사용할 경우 Write가 모든 본문 컨텐츠를 대체합니다. (0) | 2023.07.24 |
Oracle: 하나의 필드를 업데이트하는 동안 행 복사 (0) | 2023.07.24 |