簡體   English   中英

在java中將美國日期轉換為EU日期

[英]Converting US date to EU date in java

如果不使用“dateformat”或類似的東西,我試圖將美國日期“mm / dd / yyyy”的字符串更改為EU格式“dd / mm / yyyy”。 我是使用字符串和字符串方法來做到這一點。 我覺得我非常接近這一點,但無法弄明白。 這是我的代碼:

import java.util.Scanner;

public class DateChange {

    public static void main(String[] args) {
        Scanner kbd = new Scanner(System.in);
        String usDate, euDate, day, month;
        int year;
        System.out.println("Enter a date in the form month/day/year:");
        usDate = kbd.nextLine();
        month = usDate.substring(0, '/');
        day = usDate.substring('/', '/');
        year = usDate.lastIndexOf('/');
        euDate = day + "." + month + "." + year;
        System.out.println("Your date in European form is:");
        System.out.println(euDate);
    }

}

這是我得到的錯誤:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 47
    at java.lang.String.substring(String.java:1963)
    at DateChange.main(DateChange.java:12)

為什么不使用方法String.split使用'/'作為分隔符拆分輸入字符串。 它返回一個字符串數組。 只需交換數組的前兩個元素。

String usdate = "12/27/2015";
String[] arr = usdate.split("/");
String eudate = arr[1] + "/" + arr[0] + "/" + arr[2];

問題是java.String.substring需要兩個int值,而不是char值。 '/'的int值為47,因此substring以47為輸入,而不是indexOf '/'。

如果要在不使用Java庫的情況下解決此問題,請使用以下代碼:

import java.util.*;

public class DateChange {
    public static void main(String[] args) {
        Scanner kbd = new Scanner(System.in);
        String usDate, euDate, day = "", month = "", year = "";
        System.out.println("Enter a date in the form month/day/year:");
        usDate = kbd.nextLine();
        kbd.close();
        month = usDate.substring(0, usDate.indexOf("/"));
        day = usDate.substring(usDate.indexOf("/")+1, usDate.lastIndexOf("/"));
        year = usDate.substring(usDate.lastIndexOf("/")+1, usDate.length());
        euDate = day + "." + month + "." + year;
        System.out.println("Your date in European form is:");
        System.out.println(euDate);
    }
}
Scanner kbd = new Scanner(System.in);
        String usString = kbd.nextLine();
        String[] stringArray = usString.split("(\\/|\\.)");
        String month = stringArray[0];
        String day = stringArray[1];
        String year = stringArray[2];
        System.out.println("m"+month+"d"+day+"y"+year);

此代碼顯示如何使用RegEx將sting拆分為字符串數組,然后可以在沒有DateFormat類的情況下將其重組為EU格式。

暫無
暫無

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

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