【问题标题】:Java get current day from unix timestamp [duplicate]Java从unix时间戳获取当前日期[重复]
【发布时间】:2018-01-05 15:00:39
【问题描述】:

我想仅将 unix 时间戳转换为当前日期,例如当年当前日期的月份的当前日期,是否可以只使用数学,如 *、/ 或其他东西?

【问题讨论】:

  • 当前日期在哪个时区,对于初学者来说?
  • Instant.ofEpochSecond( 1501350790 ).atZone( ZoneId( "Pacific/Auckland" ) ).toLocalDate()

标签: java unix-timestamp


【解决方案1】:

简短的解决方案类似于

long epoch = 1501350790; // current unix time
int day = Integer.parseInt(new SimpleDateFormat("dd").format(new Date(epoch * 1000L)));

可以通过计算(*和/)得到这个结果,但没有简单的方法。可以参考java.util.GregorianCalendar的实现

【讨论】:

    【解决方案2】:

    您可以使用 SimpleDateFormat 来格式化您的日期:

    long unixSeconds = 1372339860;
    Date date = new Date(unixSeconds*1000L); // *1000 is to convert seconds to milliseconds
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); // the format of your date
    sdf.setTimeZone(TimeZone.getTimeZone("GMT-4")); // give a timezone reference for formating (see comment at the bottom
    String formattedDate = sdf.format(date);
    System.out.println(formattedDate);
    

    您也可以将时间戳乘以 1000 将其转换为毫秒:

    java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);
    

    做完就可以得到你想要的:

    Calendar cal = Calendar.getInstance();
    cal.setTime(dateTime);
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH); //here is what you need
    int day = cal.get(Calendar.DAY_OF_MONTH);
    

    【讨论】:

    • 我明白了,但我只想要当天的输出,如果月份的日期是 29,那么我只想要输出 29,今年的当天也可以,比如210(2017-07-29)
    • 刚刚更新了答案。看看它是否能解决你的问题。
    • 仅供参考,这些麻烦的类现在是遗留的,被 java.time 类所取代。
    【解决方案3】:

    您可以使用 java.util.Date 从 unix 时间戳计算日期 您需要将时间戳乘以 1000,因为 java 需要毫秒。您可以使用cal.get(Calendar.DAY_OF_MONTH) 函数打印日期。

    import java.sql.Timestamp;
    import java.util.Calendar;
    
    public class MyFirstJavaProgram {
        public static void main(String []args) {
           long unixTimeStamp= System.currentTimeMillis() / 1000L;
           java.util.Date time=new java.util.Date((long)unixTimeStamp*1000);
           Calendar cal = Calendar.getInstance();
           // It's a good point better use cal because date-functions are deprecated
           cal.setTime(time);
           System.out.println(cal.get(Calendar.DAY_OF_MONTH));
        }
    }
    

    还有什么问题请留言。

    【讨论】:

    • 或者理想情况下不要使用java.util.Datejava.util.Calendar - 使用更好的java.time.* API...
    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2010-12-31
    • 2013-03-10
    • 2012-03-04
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多