Быстрый ответ:
нет, Нельзя сделать это. , поскольку, именно это Date
использование для.
От javadoc Date
:
класс Дата представляет определенный момент вовремя с точностью миллисекунды.
Однако , так как этот класс является просто объектом данных. Это, о котором доза не заботится о том, как мы описываем это. Когда мы видим дату 2012/01/01 12:05:10.321
, мы можем сказать, что это 2012/01/01
, это - то, в чем Вы нуждаетесь. Существует много способов сделать это.
Пример 1: путем управления строкой
Входная строка: 20.01.2012 12:05:10.321
Желаемая выходная строка: 2012/01/20
Начиная с yyyy/MM/dd точно, в чем мы нуждаемся, мы можем просто управлять строкой для получения результата.
String input = "2012/01/20 12:05:10.321";
String output = input.substring(0, 10); // Output : 2012/01/20
Пример 2: входной строкой SimpleDateFormat
: 20.01.2012 12:05:10.321
Желаемая выходная строка: 01/20/2012
В этом случае мы хотим другой формат.
String input = "2012/01/20 12:05:10.321";
DateFormat inputFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = inputFormatter.parse(input);
DateFormat outputFormatter = new SimpleDateFormat("MM/dd/yyyy");
String output = outputFormatter.format(date); // Output : 01/20/2012
Для использования SimpleDateFormat
, проверьте SimpleDateFormat JavaDoc.
Не может полагать, что никто не предложил этот поганый ответ со всей остальной частью их. Это было удержано от использования в течение многих десятилетий.
@SuppressWarnings("deprecation")
...
Date hitDate = new Date();
hitDate.setHours(0);
hitDate.setMinutes(0);
hitDate.setSeconds(0);
Не пытайтесь мешать, просто следуют за простым путем
, дата является строкой, где Ваша дата сохраняется
String s2=date.substring(0,date.length()-11);
, теперь печатают значение s2
. это уменьшит Ваш длина строки , и Вы получите только часть даты.
В addtition к тому, что уже сказал @jseals. Я думаю org.apache.commons.lang.time. Класс DateUtils, вероятно, на что необходимо смотреть.
Это - метод: усеченный (Дата даты, международное поле) работал очень хорошо на меня.
JavaDocs: https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html#truncate (java.util. Дата , интервал)
, Так как необходимо было усечь все время поля, которые можно использовать:
DateUtils.truncate(new Date(),Calendar.DAY_OF_MONTH)
Другой способ работать здесь состоит в том, чтобы использовать java.sql. Дате как sql Дата не связали время с ним, тогда как java.util. Дата всегда имеет метку времени. Что ловит точку, вот java.sql. Дата расширяет java.util. Дата, поэтому java.util. Переменная даты может быть ссылкой на java.sql. Дата (без времени) и к java.util. Дата, конечно (с меткой времени).
Можно также вручную изменить часть времени даты и формата в шаблон "dd/mm/yyyy" согласно требованию.
public static Date getZeroTimeDate(Date changeDate){
Date returnDate=new Date(changeDate.getTime()-(24*60*60*1000));
return returnDate;
}
, Если возвращаемое значение не работает затем проверка на параметр контекста в web.xml. например,
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
String substring(int startIndex, int endIndex)
, Другими словами, Вы знаете, что Ваша строка будет 10 characers долго, таким образом, Вы сделали бы:
FinalDate = date.substring(0,9);
При использовании Java 8 + используйте java.time. Тип LocalDate вместо этого.
LocalDate now = LocalDate.now();
System.out.println(now.toString());
вывод:
2019-05-30
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
Корректный класс для использования для даты без времени суток LocalDate
. LocalDate
часть java.time, современная дата и время Java API.
, Таким образом, лучшая вещь, которую можно сделать, состоит в том, если можно изменить getStartDate
метод, Вы используете для возврата LocalDate
:
DateTimeFormatter dateFormatter = DateTimeFormatter
.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(Locale.forLanguageTag("en-IE"));
LocalDate d = eventList.get(0).getStartDate(); // We’re now getting a LocalDate using this method
String dateString = d.format(dateFormatter);
System.out.println(dateString);
Пример произвел:
21/03/2012
, Если Вы не можете измениться эти getStartDate
, можно все еще смочь добавить новый метод, возвратив тип, который мы хотим. Однако, если Вы не можете позволить себе сделать это сейчас, преобразовать старомодное Date
, что Вы добираетесь (я принимаю java.util.Date
):
d = eventList.get(0).getStartDate(); // I'm getting the old-fashioned Date using this method
LocalDate dateWithoutTime = d.toInstant()
.atZone(ZoneId.of("Asia/Kolkata"))
.toLocalDate();
вставьте часовой пояс, который был принят для Date
. Можно использовать ZoneId.systemDefault()
для установки часового пояса JVM’s, только эти настройки могут быть изменены в любое время от других частей программы или других программ, работающих в той же JVM.
java.util.Date
класс был тем, что мы все использовали, когда этот вопрос задали 6 лет назад (не, не все; я был, и мы были многими). java.time вышел несколько лет спустя и заменил старое Date
, Calendar
, SimpleDateFormat
и DateFormat
. Распознавание, что они были плохо разработаны. Кроме того, Date
несмотря на его имя не может представить дату. It’s момент времени. То, что делают другие ответы, они округляют время в меньшую сторону до запуска дня (“midnight”) в часовом поясе по умолчанию JVM’s. Это doesn’t удаляет время суток, только наборы это, обычно к 0:00. Измените свой часовой пояс по умолчанию —, как я сказал, даже другая программа, работающая в той же JVM, может сделать это в любое время без уведомления —, и все будет повреждаться (часто).
Ссылка: учебное руководство Oracle: Время Даты объяснение, как использовать java.time
.
java.util. Дата представляет дата/время вниз к миллисекундам. У Вас нет опции, но включать время с ним. Вы могли попытаться обнулить время, но затем часовые пояса и переход на летнее время сыграют роль - и это может завинтить вещи по линии (e.g. 21/03/2012 0:00 GMT is 20/03/2012 PDT).
, Что Вы могли бы хотеть, java.sql.Date
для представления только части даты (хотя внутренне она все еще использует мс).
Date dateWithoutTime =
new Date(myDate.getYear(),myDate.getMonth(),myDate.getDate())
Это удерживается от использования, но самый быстрый способ сделать это.
Можно записать что, например:
private Date TruncarFecha(Date fechaParametro) throws ParseException {
String fecha="";
DateFormat outputFormatter = new SimpleDateFormat("MM/dd/yyyy");
fecha =outputFormatter.format(fechaParametro);
return outputFormatter.parse(fecha);
}
Вы могли попробовать что-то вроде этого:
import java.text.*;
import java.util.*;
public class DtTime {
public static void main(String args[]) {
String s;
Format formatter;
Date date = new Date();
formatter = new SimpleDateFormat("dd/MM/yyyy");
s = formatter.format(date);
System.out.println(s);
}
}
Это даст Вам вывод как 21/03/2012
, Или Вы могли попробовать это, если Вы хотите вывод как 21 Mar, 2012
import java.text.*;
import java.util.*;
public class DtTime {
public static void main(String args[]) {
Date date=new Date();
String df=DateFormat.getDateInstance().format(date);
System.out.println(df);
}
}
Может быть ниже кода, может помочь людям, которые ищут zeroHour дня:
Date todayDate = new Date();
GregorianCalendar todayDate_G = new GregorianCalendar();
gcd.setTime(currentDate);
int _Day = todayDate_GC.get(GregorianCalendar.DAY_OF_MONTH);
int _Month = todayDate_GC.get(GregorianCalendar.MONTH);
int _Year = todayDate_GC.get(GregorianCalendar.YEAR);
GregorianCalendar newDate = new GregorianCalendar(_Year,_Month,_Day,0,0,0);
zeroHourDate = newDate.getTime();
long zeroHourDateTime = newDate.getTimeInMillis();
Hope это будет полезно.
То, что Вы хотите, невозможно .
А Date
объект представляет "абсолютный" момент вовремя. Вы не можете "удалить часть времени" из него. Когда Вы распечатаете Date
объект непосредственно с System.out.println(date)
, он будет всегда форматироваться в формате по умолчанию, который включает время. Нет ничего, что можно сделать для изменения этого.
Вместо того, чтобы так или иначе пытаться использовать класс Date
для чего-то, для чего это не было разработано, необходимо искать другое решение. Например, используйте SimpleDateFormat
для форматирования даты в любом формате, который Вы хотите.
дата Java и календарные API являются, к сожалению, не наиболее хорошо разработанными классами стандартного Java API. Существует библиотека, названная Joda-разовая , который имеет намного лучший и более мощный API.
Joda-разовый имеет много специальных классов для поддержки дат, времена, периоды, продолжительности, и т.д. Если бы Вы хотите работать только с датой без времени, затем Joda-время LocalDate
, класс был бы тем, что Вы будете использовать.
Что относительно этого:
Date today = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
today = sdf.parse(sdf.format(today));
Apache палата общин DateUtils имеет "усеченный" метод, что я просто раньше делал это, и я думаю, что он удовлетворит Ваши потребности. Это действительно просто в использовании:
DateUtils.truncate(dateYouWantToTruncate, Calendar.DAY_OF_MONTH);
DateUtils также имеет хост других прохладных утилит как "isSameDay ()" и т.п.. Проверьте его он! Это могло бы сделать вещи легче для Вас.
Можно удалить часть времени из java.util. Дата путем установки часа, минуты, второй и миллисекунда, оценивает нулю.
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
public static Date removeTime(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
}
Что-то вроде выдумки, но Вы могли использовать java.sql. Дата. Это только сохранило часть даты, и основанное на нуле время (полночь)
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2011);
c.set(Calendar.MONTH, 11);
c.set(Calendar.DATE, 5);
java.sql.Date d = new java.sql.Date(c.getTimeInMillis());
System.out.println("date is " + d);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("formatted date is " + df.format(d));
дает
date is 2011-12-05
formatted date is 05/12/2011
, Или могло бы стоить создать Ваш собственный объект даты, который просто содержит даты и не времена. Это могло перенести java.util. Дата и игнорирует части времени его.