Вы должны сначала проанализировать его в исходном текстовом формате, а затем отформатировать результат, используя формат, который вы хотите, чтобы в итоге. Для этого вы можете использовать SimpleDateFormat
или Joda Time (что, как правило, намного лучше API даты / времени).
Пример кода с использованием SimpleDateFormat
:
import java.text.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
String inputText = "Nov 10,1980";
TimeZone utc = TimeZone.getTimeZone("UTC");
// Or dd instead of d - it depends whether you'd use "Nov 08,1980"
// or "Nov 8,1980" etc.
SimpleDateFormat inputFormat = new SimpleDateFormat("MMM d,yyyy",
Locale.US);
inputFormat.setTimeZone(utc);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd",
Locale.US);
outputFormat.setTimeZone(utc);
Date parsed = inputFormat.parse(inputText);
String outputText = outputFormat.format(parsed);
System.out.println(outputText); // 1980-11-10
}
}
Обратите внимание, что:
- Я явно указал локаль для использования; в противном случае, если вы попытаетесь проанализировать текст в системе с (скажем) французским языком по умолчанию, он попытается проанализировать его, используя французские названия месяцев.
- Я явно установил часовой пояс как UTC, чтобы избежать проблем с переходом на летнее время (когда конкретное значение может быть неоднозначным или даже отсутствовать в часовом поясе по умолчанию)