2013-07-12 4 views
-4

Я хочу этот форматДата конверсии в определенном формате

Я получаю системную дату, используя Date d = new Date();

Я стараюсь

SimpleDateFormat formatter2 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss.s"); 
Date d = new Date(); 
String CALL_DATE = formatter2.format(d); 

Таты дать мне выход правильно, но если преобразовать дату в dd-MMM-yyyy hh:mm:ss.s Я пытаюсь ее сохранить, дает ошибку:

ORA-01830: date format picture ends before converting entire input string 

, пожалуйста, предложите мне об этом решении.

+0

Ваш код отлично работает и печатается '12-Jul-2013 11: 56: 06.6' –

+1

То же самое здесь. Какую ошибку вы получаете? –

+0

Не удалось воспроизвести и не выполнить стек: голосование закрывается –

ответ

0

Я не знаю, почему вы отправили это как вопрос.

SimpleDateFormat formatter2 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss.s"); 
Date d = new Date(); 
String CALL_DATE = formatter2.format(d); 

Это прекрасно работает. Если вы хотите принять дату в других форматах, обратитесь к this.

+0

, когда я пытаюсь его сохранить, дает ошибку: ORA-01830: конец формата даты заканчивается перед преобразованием всей строки ввода – AloNE

+0

@AloNE вы уверены, что получите эту ошибку в коде **, который вы ** отправили? – m4tx

+0

нет, он не дает мне правильный выход, но в то же время дает ошибку. – AloNE

2

Хм, код, который вы опубликовали, работает (и компилируется) отлично для меня :) Единственное, что мне нужно было сделать, это добавить некоторые импорты. Посмотрите:

import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Test { 
    public static void main(String args[]) { 
     SimpleDateFormat formatter2 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss.S"); 
     Date d = new Date(); 
     String CALL_DATE = formatter2.format(d); 
     System.out.println(CALL_DATE); 
    } 
} 

Кроме того, как @adarshr сказал, что вам нужно заменить s с S для печати миллисекунды.

Выход:

[email protected]:~/Desktop$ javac Test.java 
[email protected]:~/Desktop$ java Test 
12-Jul-2013 08:30:41.935 
0

Try, чтобы получить помощь, используя любой из этих функций, сделав некоторые изменения в соответствии с вами требования.

public static Date getDatebyMilliSeconds(Long timeInMillis) { 

     Calendar cal = Calendar.getInstance(); 
     cal.setTimeInMillis(timeInMillis); 
     Date date = cal.getTime(); 
     return date; 
    } 


    public static Date getDateByString(String str_date) { 
     DateFormat formatter; 
     Date date = new Date(); 
     try { 
      formatter = new SimpleDateFormat("mm/dd/yyyy HH:mm:ss"); 
      date = (Date) formatter.parse(str_date); 
     } catch (ParseException e) { 
      logger.error("------- error in date conversion " + e.getMessage()); 
     } 
     return date; 
    } 

Вы можете использовать date.getTime() это будет возвращать время в миллисекундах, а затем вы можете использовать функцию 1 я уже говорил, и тем же самым способом, сделав некоторые изменения, вы можете использовать 2-ым.

0

Попробуйте это ..... ваш код хорошо, но я думаю, что вы сделали по ошибке какой-то другой части кода в любом случае использовать этот код, приведенный ниже, чтобы проверить это

import java.util.*; 
    import java.text.*; 

    public class Datedemo { 
    public static void main(String args[]) { 

     Date dNow = new Date(); 
     SimpleDateFormat ft = 
     new SimpleDateFormat ("dd-MMM-yyyy hh:mm:ss.S"); 

     System.out.println("Current Date: " + ft.format(dNow)); 
    } 
} 

выход

Current Date: 12-Jul-2013 11:56:44.44 
3

Странно, что ни один из ответов не указывает, что для печати миллисекунд вам необходимо использовать dd-MMM-yyyy hh:mm:ss.S.

Обратите внимание на верхний регистр S.

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+0

Код OP отлично работает и печатается 12 июля 2013 г. 11: 56: 06.6 –

+0

Ну, это напечатано 06.6, потому что у вас есть 's.s'. Это не может быть правильным выходом! Он просто дублирует секунды в миллисекундах. – adarshr

+0

Но ОП говорит, что получил ошибку. +1 для места. –

Смежные вопросы