簡體   English   中英

在 Java 中將日期格式從 m/dd/yy 更改為 yyyy/MM/dd

[英]Change date format from m/dd/yy to yyyy/MM/dd in Java

我在一個帶有 2 位數年份的字符串中有這個日期。 我需要轉換成另一種格式。 我嘗試使用 SampleDateFormat 但它沒有用。 SampleDateFormat 僅在 yyyy/MM/dd 中給出了我想要的帶有 UTC 和時間戳的錯誤格式 i.2 日期。 有沒有其他方法可以做到這一點?

String receiveDate = "7/20/21";
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
try {
    rdate = sdf.parse(receiveDate);
} catch (ParseException e) {
    e.printStackTrace();
}
String recievedt = rdate.toString();
String dateParts[] = recievedt.split("/");
// Getting day, month, and year from receive date
String month = dateParts[0];
String day = dateParts[1];
String year = dateParts[2];

int iday = Integer.parseInt(day);
int imonth = Integer.parseInt(month);
int iyear = Integer.parseInt(year);
LocalDate date4 = LocalDate.of(iyear, imonth, iday).plusDays(2*dueoffset);

如果您可以使用java.time API,我會建議以下內容:

String input = "7/20/21";
LocalDate receivedDate = LocalDate.parse(input, DateTimeFormatter.ofPattern("M/dd/yy"));
String formatted = receivedDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
// or if you actually need the date components
int year = receivedDate.getYear();
...

如果不能使用 java.time API,這里有一個使用 Calendar 的建議:

String receiveDate="2021/07/20";
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date rdate;
rdate = sdf.parse(receiveDate);

Calendar rcal = Calendar.getInstance();
rcal.setTime(rdate);
// Getting day, month, and year from receive date
int iday = rcal.get(Calendar.DAY_OF_MONTH);
int imonth= rcal.get(Calendar.MONTH);
int iyear= rcal.get(Calendar.YEAR);

請注意,月份是從零開始的,即一月為 0,二月為 1 等。

String receiveDate="7/20/21";怎么樣String receiveDate="7/20/21"; 有效日期?

String dateStr = "07/10/21";
SimpleDateFormat receivedFormat = new SimpleDateFormat("yy/MM/dd");
SimpleDateFormat finalFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = receivedFormat.parse(dateStr);
System.out.println(finalFormat.format(date));  // 2007/10/21

但是,這要求您的年、月和日的日期前導零。 如果不是這種情況,請清理您的日期字符串。

public static String sanitizeDateStr(String dateStr) {
    String dateStrArr[] = dateStr.split("/");
    String yearStr = String.format("%02d", Integer.parseInt(dateStrArr[0]));
    String monthStr = String.format("%02d", Integer.parseInt(dateStrArr[1]));
    String dayStr = String.format("%02d", Integer.parseInt(dateStrArr[2]));
    
    return String.format("%s/%s/%s", yearStr, monthStr, dayStr);
}

public static void main (String[] args) throws Exception {
    String dateStr = sanitizeDateStr("7/10/21");
    SimpleDateFormat receivedFormat = new SimpleDateFormat("yy/MM/dd");
    SimpleDateFormat finalFormat = new SimpleDateFormat("yyyy/MM/dd");
    Date date = receivedFormat.parse(dateStr);
    System.out.println(finalFormat.format(date));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM