簡體   English   中英

如何將字符串轉換為相應的日期,月份和日期

[英]How to convert a string to corresponding day,month and date

比如說:我有

    String a= "may 22-may 28  Free"  

來自回應。 從服務如何變成這樣?

    Tue,5.22- thur,5.28 

注意:最后給了兩個空格,即日期之后,然后是一個自由文本,因此忽略該空格,只考慮響應中的日期,怎么辦? 任何想法?

    DateFormatter formatter = new SimpleDateFormat("dd-MM-yyyy:HH:mm:SS");
    convertedDate = (Date) formatter.parse(a);

但這是我無法實現的,因為我無法根據
預期產量
就像這個星期二5.22至5.28。
如何實現呢?

提前致謝

沒有內置的解析器可用於您擁有的String和所需的返回類型。 您可以在此處檢查所有受支持的日期和時間模式, 網址為http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html

您將必須編寫自己的解析器。

您可以嘗試先用'-'和''(更遠的空格)分割字符串。 然后,我相信您可以輕松獲取格式。

簡單的代碼是:

字符串a =“ 5月22日至5月28日免費”; String [] array = new String [2]; 數組= a.split('-');

//將數組設置為{'may 22','may 28 Free'}-讓我們獲取第一個數組值,即array [0]

字符串date [] =新的String [2]; 日期= array [0] .split('');

//您將日期數組設置為{'may','22'}

您可以創建一個開關箱來為Month('may')字符串返回正確的月份號,並按原樣使用日期('22')。

要獲取星期幾,請使用以下代碼:(確保您也擁有Year)

日歷c = Calendar.getInstance(); c.setTime(yourDate); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

這是我建議的最簡單的代碼。 您當然可以進一步即興創作。 同樣,每當您獲得一個具有2個以上屬性的數組時(按照給定的示例),最后一個字符串為“ Free”,您可以在此處停止執行。

希望能幫助到你!

我想你想要這樣的東西:

    final String a = "dec 22-may 28";
    final int currentYear = Calendar.getInstance().get(Calendar.YEAR);
    final SimpleDateFormat stringToDate = new SimpleDateFormat("MMM dd");
    final SimpleDateFormat dateToString = new SimpleDateFormat("EE,M.dd");
    final String[] dates = a.split("-");

    // First
    Date convertedDate = stringToDate.parse(dates[0]);
    final Calendar c1 = Calendar.getInstance();
    c1.setTime(convertedDate);
    c1.set(Calendar.YEAR, currentYear);
    System.out.println(c1.getTime());
    System.out.println(dateToString.format(c1.getTime()));

    // Second
    convertedDate = stringToDate.parse(dates[1]);
    final Calendar c2 = Calendar.getInstance();
    c2.setTime(convertedDate);
    c2.set(Calendar.YEAR, currentYear);
    if (c2.before(c1)) {
        c2.set(Calendar.YEAR, currentYear + 1);
    }
    System.out.println(c2.getTime());
    System.out.println(dateToString.format(c2.getTime()));

請記住,我使用dec-may,因為這是我能想到的最壞的情況。 另請注意,我將第一個日期設為當前年份,第二個日期可能是明年(如本例所示)。

您可以使用以下代碼嘗試。

public static void main(String[] args) {

    String a= "may 22-may 28"  ;
    String[]arr = a.split("-");
    String date1 = arr[0];
    String date2 = arr[1];

    String result = getFormattedDate(date1) +"- " + getFormattedDate(date2);
    System.out.println(result); 
    //Output is Fri,5.22- Thu,5.28

}

public static String getFormattedDate(String inputDate){
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd");
    SimpleDateFormat sdf2 = new SimpleDateFormat("EE,M.dd");
    String result = "";
    Date d1 = null;
    try {
        d1 = sdf.parse(inputDate);
        result = sdf2.format(d1);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return result;
}

暫無
暫無

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

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