Java-программа для получения текущей даты без отметки времени - PullRequest
14 голосов
/ 11 мая 2010

Мне нужна программа на Java, чтобы получить текущую дату без отметки времени :

Date d = new Date();

дает мне дату и время.

Но мне нужна только дата, без отметки времени. Я использую эту дату для сравнения с другим объектом даты, у которого нет метки времени.

На печати

System.out.println("Current Date : " + d)

of d должно вывести May 11 2010 - 00:00:00.

Ответы [ 17 ]

0 голосов
/ 14 июля 2018

Вот полный пример этого. Но вы должны привести Sting обратно к дате.

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

//TODO OutPut should LIKE in this format MM dd yyyy HH:mm:ss.SSSSSS
public class TestDateExample {

    public static void main(String args[]) throws ParseException {
        SimpleDateFormat changeFormat = new SimpleDateFormat("MM dd yyyy HH:mm:ss.SSSSSS");
         Date thisDate = new Date();//changeFormat.parse("10 07 2012"); 
         System.out.println("Current Date : " + thisDate);
         changeFormat.format(thisDate); 
        System.out.println("----------------------------"); 
        System.out.println("After applying formating :");
        String strDateOutput = changeFormat.format(thisDate);
        System.out.println(strDateOutput);

    }

}

Eaxmple

0 голосов
/ 20 августа 2017

Вот мой код для получения только даты:

Calendar c=Calendar.getInstance();
DateFormat dm = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date date = new java.util.Date();
System.out.println("current date is :    " + dm.format(date));
0 голосов
/ 11 мая 2010

Я думаю, это будет работать. Используйте Календарь, чтобы манипулировать полями времени (сбросьте их на ноль), затем получите дату из календаря.

Calendar c = GregorianCalendar.getInstance();
c.clear( Calendar.HOUR_OF_DAY );
c.clear( Calendar.MINUTE );
c.clear( Calendar.SECOND );
c.clear( Calendar.MILLISECOND );
Date today = c.getTime();

Или сделай наоборот. Поместите в календарь дату, с которой хотите сравнить, и сравните даты календаря

Date compareToDate;  // assume this is set before going in.
Calendar today = GregorianCalendar.getInstance();
Calendar compareTo = GregorianCalendar.getInstance();
compareTo.setTime( compareToDate );
if( today.get( Calendar.YEAR ) == compareTo.get( Calendar.YEAR ) &&
    today.get( Calendar.DAY_OF_YEAR  ) == compareTo.get( Calendar.DAY_OF_YEAR  ) ) {
  // They are the same day!
}
0 голосов
/ 11 сентября 2013

Я искал такое же решение, и у меня сработало следующее.

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.clear(Calendar.HOUR);
    calendar.clear(Calendar.MINUTE);
    calendar.clear(Calendar.SECOND);
    calendar.clear(Calendar.MILLISECOND);

    Date today = calendar.getTime();

Обратите внимание, что я использую calendar.set (Calendar.HOUR_OF_DAY, 0) для HOUR_OF_DAY вместо использования метода clearпотому что это предложено в javadocs метода Calendar.clear как следующие

Поля HOUR_OF_DAY, HOUR и AM_PM обрабатываются независимо, и применяется правило разрешения для времени дня.Очистка одного из полей не сбрасывает значение часа в календаре.Используйте set (Calendar.HOUR_OF_DAY, 0) для сброса значения часа.

С помощью приведенного выше решения я получаю вывод как

Wed Sep 11 00:00:00 EDT 2013

Использование метода clear для HOUR_OF_DAY сбрасывает часы в12 при исполнении после 12:00 или 00 при исполнении до 12:00. * 10101 *

0 голосов
/ 11 января 2013

Если вы действительно хотите использовать вместо Календаря дату для сравнения, это самый короткий фрагмент кода, который вы можете использовать:

Calendar c = Calendar.getInstance();
Date d = new GregorianCalendar(c.get(Calendar.YEAR), 
                               c.get(Calendar.MONTH), 
                               c.get(Calendar.DAY_OF_MONTH)).getTime();

Таким образом вы убедитесь, что значения часов / минут / секунд / миллисекунд не заполнены.

0 голосов
/ 07 сентября 2012

Я сделал следующее, и это сработало:

calendar1.set(Calendar.HOUR_OF_DAY, 0);
calendar1.set(Calendar.AM_PM, 0);
calendar1.set(Calendar.HOUR, 0);
calendar1.set(Calendar.MINUTE, 0);
calendar1.set(Calendar.SECOND, 0);
calendar1.set(Calendar.MILLISECOND, 0);
Date date1 = calendar1.getTime();       // Convert it to date

Сделайте это для других случаев, с которыми вы хотите сравнить. Эта логика сработала для меня; Мне приходилось сравнивать даты независимо от того, равны они или нет, но вы можете делать разные сравнения (до, после, равно и т. Д.)

0 голосов
/ 11 мая 2010

Вот не элегантный способ сделать это быстро без дополнительных зависимостей.
Вы можете просто использовать java.sql.Date, который расширяет java.util.Date, хотя для сравнения вам придется сравнить строки

java.sql.Date dt1 = new java.sql.Date(System.currentTimeMillis());
String dt1Text = dt1.toString();
System.out.println("Current Date1 : " + dt1Text);

Thread.sleep(2000);

java.sql.Date dt2 = new java.sql.Date(System.currentTimeMillis());
String dt2Text = dt2.toString();
System.out.println("Current Date2 : " + dt2Text);

boolean dateResult = dt1.equals(dt2);
System.out.println("Date comparison is " + dateResult);
boolean stringResult = dt1Text.equals(dt2Text);
System.out.println("String comparison is " + stringResult);

Выход:

Текущая дата1: 2010-05-10
Текущая дата2: 2010-05-10
Сравнение дат неверно
Сравнение строк верно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...