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