source

Android:문자열을 날짜로 변환하려면 어떻게 해야 합니까?

ittop 2023. 8. 5. 10:58
반응형

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(여름 시간 또는 유사한 시간으로 인해) 오프셋이 변경되는 명명된 시간대를 고려하는 한편OffsetDateTimeUTC로부터의 오프셋만 알고 있습니다.

로케일을 주의하는 것이 좋을 수 있습니다.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

반응형