[英]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.