たとえば、日付型として文字列変数があり、次の
String myDate= "20130403";
ように 3 つの異なる日付形式に分けたいとします。
String myDay = "03";
String myMonth= "04";
String myYear= "2013";
文字列を分離する最速の方法は?
ありがとう
String yourDateString = "20130403";
SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");
Date currentDate = sd.parse(yourDateString);
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
String year = String.valueOf(cal.get(Calendar.YEAR)) + "";
// As Gyro said month start at 0 to 11.
String month = String.valueOf(cal.get(Calendar.MONTH)+1) + "";
String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)) + "";
これが固定形式の場合は、単純に部分文字列を使用してください。
String myDate= "20130403";
String myYear = myDate.substring(0,4);
String myMonth= myDate.substring(4,6);
String myDay= myDate.substring(6,8);
System.out.println(myDay);
System.out.println(myMonth);
System.out.println(myYear);
日付がそのような形式であることが確実にわかっている場合は、これに関数をyyyyMMdd
使用できますsubString
String myDate = "20120221"
String year = myDate.subString(0,4);
String month = myDate.subString(4,6);
String day = myDate.subString(6);
これには、特別なJavaの単純な日付形式を使用したいと思います。
部分文字列を試していますか? このように(私が考える最良の方法であり、最速でもあります):
@Test
final public void testStringDateOperation() {
final String myDate= "20130403";
final String year = myDate.substring(0, 4);
final String month = myDate.substring(4, 6);
final String day = myDate.substring(6, 8);
Logger.trace("year: {0} - month: {1} - day: {2}", year, month, day);
}
substring はタスクを実行する可能性がありますが、最速の方法ではありません。Substring は、すべてのトークンに対して新しい文字列オブジェクトを作成するため、パフォーマンス効率や最速の方法ではありません。以下は、Java src の subString() のソース コードです。
public String More ...substring(int beginIndex, int endIndex) {
if (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if (endIndex > count) {
throw new StringIndexOutOfBoundsException(endIndex);
}
if (beginIndex > endIndex) {
throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
}
return ((beginIndex == 0) && (endIndex == count)) ? this :
**new String(offset + beginIndex, endIndex - beginIndex, value);**
}
したがって、最善の方法は、私によると正規表現を使用して分割することです。
よろしくプニス