Как конвертировать формат даты - PullRequest
1 голос
/ 21 декабря 2011

У меня есть формат даты "Nov 10,1980" в строковом формате (String str = "10 ноября 1980"), и я хочу преобразовать его в 1980-11-10.Может кто-нибудь сказать мне, как сделать это с помощью Java.

Заранее спасибо

Ответы [ 6 ]

2 голосов
/ 21 декабря 2011

Вы должны сначала проанализировать его в исходном текстовом формате, а затем отформатировать результат, используя формат, который вы хотите, чтобы в итоге. Для этого вы можете использовать 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, чтобы избежать проблем с переходом на летнее время (когда конкретное значение может быть неоднозначным или даже отсутствовать в часовом поясе по умолчанию)
1 голос
/ 21 декабря 2011
try {
    SimpleDateFormat sdf1 = new SimpleDateFormat("MMM dd, yyyy");
    Date strDt = sdf1.parse("Nov 10, 1980");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(sdf2.format(strDt));
} catch (Exception e) {
    e.printStackTrace();
}
1 голос
/ 21 декабря 2011

Используйте это

            Date date = new Date();
    SimpleDateFormat sdf;
    sdf = new SimpleDateFormat("yyyy-MM-DD");
    System.out.println(sdf.format(date));
0 голосов
/ 21 декабря 2011

Используйте SimpleDateFormat, чтобы получить желаемый результат

0 голосов
/ 21 декабря 2011

Вы можете использовать два SimpleDateFormat s.Один для анализа, другой для форматирования.Например:

public static void main(String[] args) throws ParseException {
    DateFormat parseFormat = new SimpleDateFormat("MMM dd,yyyy");
    DateFormat displayFormat = new SimpleDateFormat("yyyy-MM-dd");

    Date date = parseFormat.parse("Nov 10,1980");
    String s = displayFormat.format(date);
    System.err.println(s);
}
0 голосов
/ 21 декабря 2011
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String req_date = dateFormat.format(DATE)
System.out.println(req_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...