16 ответов:
быстрый ответ :
нет, вам нельзя этого делать. потому что
Dateиспользовать для.из javadoc из
Date:класс date представляет определенный момент времени, с точностью до миллисекунды.
, так как этот класс является объектом данных. Это доза не заботится о том, как мы ее описываем. Когда мы видим дату
2012/01/01 12:05:10.321, мы можем сказать, что это2012/01/01этот это то, что тебе нужно. Есть много способов сделать это.Пример 1: путем манипулирования строкой
входная строка: 2012/01/20 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
входная строка: 2012/01/20 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.
вы можете удалить часть времени из java.утиль.Дата, установив час, минуту, секунду и миллисекунды значения равны нулю.
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(); } }
Apache Commons DateUtils есть "усечение" метод, который я только что использовал, чтобы сделать это, и я думаю, что это будет отвечать вашим потребностям. Это очень простой в использовании:
DateUtils.truncate(dateYouWantToTruncate, Calendar.DAY_OF_MONTH);DateUtils также есть множество других интересных утилит, таких как "isSameDay()" и тому подобное. Зацени это! Это может сделать все проще для вас.
Как насчет этого:
Date today = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); today = sdf.parse(sdf.format(today));
вы могли бы попробовать что-то вроде этого:
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, 2012import 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); } }
вы можете написать это, например:
private Date TruncarFecha(Date fechaParametro) throws ParseException { String fecha=""; DateFormat outputFormatter = new SimpleDateFormat("MM/dd/yyyy"); fecha =outputFormatter.format(fechaParametro); return outputFormatter.parse(fecha); }
Date dateWithoutTime = new Date(myDate.getYear(),myDate.getMonth(),myDate.getDate())это устаревший, но самый быстрый способ сделать это.
может быть ниже код может помочь людям, которые ищут 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();надеюсь, это будет полезно.
String substring(int startIndex, int endIndex)другими словами, вы знаете, что ваша строка будет длиной 10 символов, поэтому вы сделаете:
FinalDate = date.substring(0,9);
немного выдумки, но вы могли бы использовать 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.утиль.Дата и игнорировать время части его.
java.утиль.Дата представляет собой дата/время до миллисекунд. У вас нет выбора, кроме как включить время с ним. Вы можете попробовать обнулить время, но тогда в игру вступят часовые пояса и переход на летнее время-и это может испортить ситуацию
(e.g. 21/03/2012 0:00 GMT is 20/03/2012 PDT).то, что вы можете хотеть, это
java.sql.Dateдля представления только части даты (хотя внутренне он все еще использует ms).
в дополнение к тому, что @jseals уже сказал. Я думаю, что организация.апаш.палата общин.ленг.время.Класс DateUtils, вероятно, то, что вы должны смотреть.
Это метод: усечение (дата дата, поле int) работал очень хорошо для меня.
JavaDocs : https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html#truncate(java.util.Date, int)
Так как вам нужно было усечь все поля времени вы можно использовать:
DateUtils.truncate(new Date(),Calendar.DAY_OF_MONTH)
вы также можете вручную изменить временную часть даты и формат в "ДД/ММ/гггг" модели согласно вашему требованию.
public static Date getZeroTimeDate(Date changeDate){ Date returnDate=new Date(changeDate.getTime()-(24*60*60*1000)); return returnDate; }Если возвращаемое значение не работает, то проверьте параметр контекста в интернете.XML. например.
<context-param> <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> <param-value>true</param-value> </context-param>
Не пытайтесь сделать это трудно, просто следуйте простой способ
дата-это строка, в которой сохраняется ваша дата
String s2=date.substring(0,date.length()-11);теперь выведите значение
s2. это уменьшит ваш длина строки и вы получите только дату.
еще один способ работать здесь-использовать java.язык SQL.Дата как дата sql не имеет времени, связанного с ней, в то время как java.утиль.Дата всегда имеет отметку времени. Что ловить здесь является Java.язык SQL.Дата расширяет java.утиль.Дата, следовательно, java.утиль.Переменная даты может быть ссылкой на java.язык SQL.Дата (без времени) и на java.утиль.Дата конечно (с отметкой времени).
Comments