如何从Epoch时间戳中删除小时,分钟和秒

Chu*_*rro 4 java date epoch milliseconds

我需要编写一个接受a java.util.Date并从中删除小时,分钟和毫秒的函数使用JUST MATH(没有Date格式化程序,没有Calendar对象等):

private Date getJustDateFrom(Date d) {
    //remove hours, minutes, and seconds, then return the date
}
Run Code Online (Sandbox Code Playgroud)

此方法的目的是从毫秒值获取日期,没有时间.

这是我到目前为止所拥有的:

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

问题是,这只会删除分钟和秒.我不知道如何删除时间.

如果我这样做milliseconds - (milliseconds%(1000*60*60*23)),那么它会回到前一天的23:00.

编辑:

这是另一种解决方案:

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();
}
Run Code Online (Sandbox Code Playgroud)

此解决方案是否会受到我的应用程序的客户端/服务器端之间的时区差异的影响?

Mar*_*ley 11

一天24小时.使用毫秒%(1000*60*60*24).

  • 好吧,就像你说的那样,你正试图避免夏令时调整.我相信你会发现PDT的17:00:00是格林威治标准时间午夜.这就是你问的问题的答案......也许你问的是错误的问题. (4认同)
  • 是.使用日历.具体来说,GregorianCalendar将具有许多处理时区,闰年等所需的功能. (2认同)