2017-01-06 11 views
-4

это код, который возвращает дату, но на стороне клиента я получаюjava.util.Date возвращение -> 2016-12-26 14: 18: 57,0 хотите удалить этот +0,0

2016-12 -26 14: 18: 57,0 на стороне клиента. каково возможное решение. Я использую node.js на стороне клиента. Но я думаю, что это не имеет никакого отношения к этой проблеме. Я ХОЧУ УДАЛИТЬ ЭТУ 0

SimpleDateFormat sdf = new SimpleDateFormat(format); 
    Date date = sdf.parse(value); 
    if (!value.equals(sdf.format(date))) { 
     date = null; 
    } 
    return date != null; 
+0

Какой у вас формат? –

+0

Возможный дубликат [Изменить формат даты в строке Java] (http://stackoverflow.com/questions/4772425/change-date-format-in-a-java-string) – mismanc

+0

Измените формат, и вы получите о чем вы просите. * '' Хммм ...Вы на самом деле уже получаете то, о чем просите, вы просто не просите, чего хотите. Слишком плохой компьютер не может читать ваши мысли, чтобы знать, что вы хотите, и только делать именно то, что вы говорите, да? '' * – Andreas

ответ

1

Вы не давая формат строку шаблона в конструктор SimpleDateFormat, поэтому он использует некоторые default pattern. Решение состоит в том, чтобы обеспечить правильную строку формата.

Форматирование может быть сделано следующим образом:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS") 

что приведет, например, in

29.02.2016 23:01:15.999 

Вы хотите опустить символы формата S (миллисекунды) в строке формата. Например:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss") 

Конечно, вам нужно изменить этот пример на нужды вашего формата. Поиграйте немного с порядком и количеством символов, позвоните the docs.

+0

да, я хочу удалить это .0 – ambitiousdev111

1

Попробуйте установить правильный формат в конструкторе SimpleDateFormat. Что-то вроде этого:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String value = "2016-12-26 14:18:57"; 
Date date = sdf.parse(value); 
if (!value.equals(sdf.format(date))) { 
    System.out.println("not equals"); 
} 
System.out.println("date = " + date); 
1

Т.Л., д-р

LocalDateTime.parse( 
    "2016-12-26 14:18:57.0".replace(" " , "T") 
) 
.truncatedTo(ChronoUnit.SECONDS) 
.toString() 
.replace("T" , " ") 

Избегайте устаревших даты и времени занятия

Вы используете хлопотно старые классы даты и времени, теперь наследство, вытеснен java.time классы.

ISO 8601

Сначала замените пространство в середине вашей входной строки, чтобы привести его в соответствие со стандартным форматом ISO 8601.

String input = "2016-12-26 14:18:57.0".replace(" " , "T"); 

LocalDateTime

Анализировать как LocalDateTime при условии, что ваш входной строки не хватает каких-либо признаков офсетной из-UTC или часового пояса.

LocalDateTime ldt = LocalDateTime.parse(input); 

Сформировать строку простым вызовом toString. По умолчанию для создания строки используется формат ISO 8601. Если значение не имеет дробной секунды, не появляется десятичная метка или цифры в разряде секунды.

String output = ldt.toString(); 

ldt.toString(): 2016-12-26T14: 18: 57

Если вы не любите T в середине, замените ПРОСТРАНСТВЕ.

output = output.replace("T" , " "); 

2016-12-26 14:18:57

Если ваш вклад может нести дробный второй, и вы хотите, чтобы удалить эту часть данных целиком, а не просто подавить его дисплей, усечь объект LocalDateTime.

LocalDateTime ldtTruncated = ldt.truncatedTo(ChronoUnit.SECONDS); // Truncate any fraction of a second. 

О java.time

java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.

Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.

Где получить классы java.time?

  • Java SE 8 и SE 9, а затем
    • Встроенный.
    • Часть стандартного Java API с объединенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и SE 7
    • Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
  • Android

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval, YearWeek, YearQuarter и more.