Удаление времени из объекта Date?



Я хочу удалить время из

594   16  

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));

то, что вы хотите, это невозможно.

A

вы могли бы попробовать что-то вроде этого:

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);
    }
}

вы можете написать это, например:

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

    Ничего не найдено.