Android:문자열을 날짜로 변환하려면 어떻게 해야 합니까?
사용자가 응용프로그램을 시작할 때마다 현재 시간을 데이터베이스에 저장합니다.
Calendar c = Calendar.getInstance();
String str = c.getTime().toString();
Log.i("Current time", str);
데이터베이스 측면에서는 현재 시간을 문자열로 저장합니다(위 코드 참조).따라서 데이터베이스에서 로드할 때 Date 객체에 캐스트해야 합니다.저는 그들 모두가 "날짜 형식"을 사용한 몇몇 샘플을 보았습니다.그러나 내 형식은 날짜 형식과 동일합니다.그래서 "날짜 형식"을 사용할 필요가 없다고 생각합니다.내 말이 맞니?
이 String to Date 객체를 직접 캐스트할 방법이 있습니까?저는 이 저장된 시간과 현재 시간을 비교하고 싶습니다.
갱신하다
모두 감사합니다.다음 코드를 사용했습니다.
private boolean isPackageExpired(String date){
boolean isExpired=false;
Date expiredDate = stringToDate(date, "EEE MMM d HH:mm:ss zz yyyy");
if (new Date().after(expiredDate)) isExpired=true;
return isExpired;
}
private Date stringToDate(String aDate,String aFormat) {
if(aDate==null) return null;
ParsePosition pos = new ParsePosition(0);
SimpleDateFormat simpledateformat = new SimpleDateFormat(aFormat);
Date stringDate = simpledateformat.parse(aDate, pos);
return stringDate;
}
문자열에서 날짜로
String dtStart = "2010-10-15T09:27:37Z";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = format.parse(dtStart);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
날짜에서 문자열로
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = new Date();
String dateTime = dateFormat.format(date);
System.out.println("Current Date Time : " + dateTime);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date d = dateFormat.parse(datestring)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyClass
{
public static void main(String args[])
{
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
String dateInString = "Wed Mar 14 15:30:00 EET 2018";
SimpleDateFormat formatterOut = new SimpleDateFormat("dd MMM yyyy");
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatterOut.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
다음은 Date 개체 날짜이며 출력은 다음과 같습니다.
2018년 3월 14일 수요일 13:30:00 UTC
2018년 3월 14일
SimpleDateFormat 또는 DateFormat 클래스 사용하기
예를 들어
try{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // here set the pattern as you date in string was containing like date/month/year
Date d = sdf.parse("20/12/2011");
}catch(ParseException ex){
// handle parsing exception if date string was different from the pattern applying into the SimpleDateFormat contructor
}
사용할 수 있습니다.java.time
현재 Android에서는 Android API Desugaring을 사용하거나 ThreeTenAbp를 가져와야 합니다.
와 함께java.time
활성화하면 코드와 오류를 줄이고 동일한 작업을 수행할 수 있습니다.
다음을 통과한다고 가정합니다.String
현재 승인된 답변과 마찬가지로 ISO 표준으로 포맷된 날짜/시간을 포함합니다.
그렇다면 다음 방법들과 그것들의 사용.main
로 변환하는 방법을 보여줄 수 있습니다.String
:
public static void main(String[] args) {
String dtStart = "2010-10-15T09:27:37Z";
ZonedDateTime odt = convert(dtStart);
System.out.println(odt);
}
그리고.
public static void main(String[] args) {
String dtStart = "2010-10-15T09:27:37Z";
OffsetDateTime odt = convert(dtStart);
System.out.println(odt);
}
라인을 인쇄합니다.
2010-10-15T09:27:37Z
상응하는 방법이 있을 때.
public static OffsetDateTime convert(String datetime) {
return OffsetDateTime.parse(datetime);
}
또는
public static ZonedDateTime convert(String datetime) {
return ZonedDateTime.parse(datetime);
}
물론 같은 부류는 아니지만, 그것은...
이 있습니다.LocalDateTime
영역 또는 오프셋을 구문 분석할 수 없습니다.
출력을 구문 분석하거나 형식을 지정하는 데 사용자 지정 형식을 사용하려면 다음을 사용할 수 있습니다.DateTimeFormatter
아마 이렇게 될 것입니다.
public static void main(String[] args) {
String dtStart = "2010-10-15T09:27:37Z";
String converted = ZonedDateTime.parse(dtStart)
.format(DateTimeFormatter.ofPattern(
"EEE MMM d HH:mm:ss zz uuuu",
Locale.ENGLISH
)
);
System.out.println(converted);
}
출력될 것입니다.
Fri Oct 15 09:27:37 Z 2010
당분간OffsetDateTime
패턴을 약간 조정해야 합니다.
public static void main(String[] args) {
String dtStart = "2010-10-15T09:27:37Z";
String converted = OffsetDateTime.parse(dtStart)
.format(DateTimeFormatter.ofPattern(
"EEE MMM d HH:mm:ss xxx uuuu",
Locale.ENGLISH
)
);
System.out.println(converted);
}
그러면 (약간) 다른 출력이 생성됩니다.
Fri Oct 15 09:27:37 +00:00 2010
그 이유는ZonedDateTime
(여름 시간 또는 유사한 시간으로 인해) 오프셋이 변경되는 명명된 시간대를 고려하는 한편OffsetDateTime
UTC로부터의 오프셋만 알고 있습니다.
로케일을 주의하는 것이 좋을 수 있습니다.c.getTime().toString();
경우에 따라 다르지요.
한 가지 방법은 시간을 초 단위로 저장하는 것입니다(예: UNIX 시간).아산int
쉽게 비교할 수 있으며 사용자에게 표시할 때 문자열로 변환하기만 하면 됩니다.
String source = "24/10/17";
String[] sourceSplit= source.split("/");
int anno= Integer.parseInt(sourceSplit[2]);
int mese= Integer.parseInt(sourceSplit[1]);
int giorno= Integer.parseInt(sourceSplit[0]);
GregorianCalendar calendar = new GregorianCalendar();
calendar.set(anno,mese-1,giorno);
Date data1= calendar.getTime();
SimpleDateFormat myFormat = new SimpleDateFormat("20yy-MM-dd");
String dayFormatted= myFormat.format(data1);
System.out.println("data formattata,-->"+dayFormatted);
언급URL : https://stackoverflow.com/questions/8573250/android-how-can-i-convert-string-to-date
'source' 카테고리의 다른 글
루프 증가/감소에 대한 a가 하나 이상 증가할 수 있습니까? (0) | 2023.08.05 |
---|---|
부트스트랩 3 Chevron 아이콘으로 표시 상태 축소 (0) | 2023.08.05 |
반환 문자열 유형 열 값을 버퍼 배열(MariaDB)로 후속 처리 (0) | 2023.08.05 |
선택기 "my-app"이(가) 어떤 요소와도 일치하지 않습니다. (0) | 2023.07.31 |
10보다 작음 숫자에 0을 더합니다. (0) | 2023.07.31 |