Comment faire pour supprimer l'Heure, la Minute et la Seconde à partir de l'Époque d'horodatage

J'ai besoin d'écrire une fonction qui accepte un java.util.Date et supprime les heures, les minutes et les millisecondes de il UTILISANT que des MATHS (pas de Date de formatage, pas de Calendrier des objets, etc.):

private Date getJustDateFrom(Date d) {
    //remove hours, minutes, and seconds, then return the date
}

Le but de cette méthode est d'obtenir la date à partir d'une valeur en millisecondes, sans le temps.

Voici ce que j'ai à ce jour:

private Date getJustDateFrom(Date d) {
    long milliseconds = d.getTime();
    return new Date(milliseconds - (milliseconds%(1000*60*60)));
}

Le problème est, ce ne supprime que les minutes et les secondes. Je ne sais pas comment faire pour supprimer heures.

Si je ne milliseconds - (milliseconds%(1000*60*60*23)), puis il remonte à 23:00 heures le jour précédent.

EDIT:

Voici une autre solution:

public static Date getJustDateFrom(Date d) {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    return c.getTime();
}

Cette solution d'être affectés par les différences de fuseau horaire entre le client/serveur côtés de mon application?

Quel est le but de cette méthode? Si vous voulez seulement le jour, le mois, l'année, utiliser le Calendar'obtenir.
faut-il toujours aller à 23:00 le jour précédent? Si c'est le cas, ne pouvez-vous pas simplement ajouter 1 heure?
J'ai lu que Calendar objet prend le fuseau horaire en considération. J'ai une application web qui obtient ce Jour l'objet d'un client, et je ne veux pas qu'il soit touché par les fuseaux horaires.
cela semble un peu hacky. Je ne veux pas que ce soit affecté par les années bissextiles ou de l'heure d'été.
Vous êtes à essayer de calculer une date à partir de millisecondes. Les années bissextiles vont devoir être pris en compte

OriginalL'auteur Churro | 2013-10-01