如何获取 java 中日期时间的整数值?

How to get integer value of datetime in java?

我在 Java 项目中工作,我需要在 Java 中获取 DateTime 的数字“值”。例如:日期时间是2020-07-22T17:40:56.235+05:30,我想把它转换成20200722174056235。我正在使用 DateTime 方法,如 getDate()getYear() 来获得这种价值。

有什么办法或方法可以将日期时间转换成这样的数值吗?

DateTime calendar = new DateTime();

        int year       = calendar.getYear();
        int month      = calendar.getMonthOfYear();
        int dayOfMonth = calendar.getDayOfMonth();            
        int hour       = calendar.getHourOfDay();// 12 hour clock
        int minute     = calendar.getMinuteOfHour();
        int second     = calendar.getSecondOfMinute();
        int millisecond= calendar.getMillisOfSecond();
       
        String dt = String.valueOf((year)+
                String.valueOf(month)+
                String.valueOf(dayOfMonth)+
                String.valueOf(hourOfDay)+
                String.valueOf(minute)+
                String.valueOf(second)+
                String.valueOf(millisecond));
        return Long.valueOf(dt);

我只需要使用 joda DateTime

这是代码片段

public class ValidateString {
    public static void main(String[] args) {
        String pattern = "yyyyMMddHHmmss"; // Change the pattern occording to your need
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
        String date = simpleDateFormat.format(new Date());
        System.out.println(date);
    }
}

使用格式化程序。

    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmssSSS");
    
    DateTime calendar = new DateTime();
    String formatted = calendar.toString(formatter);
    Long numericValue = Long.parseLong(formatted);
    
    System.out.println(numericValue);

我刚才运行我所在时区的代码输出:

20200722210458862

替代方法: 只有当这是我希望经常调用的库方法并且效率可能是一个问题时,我才可能考虑不格式化和解析字符串.下面给出了相同的结果。

    long numericValue = calendar.getYear();
    numericValue = numericValue * 100 + calendar.getMonthOfYear();
    numericValue = numericValue * 100 + calendar.getDayOfMonth();
    numericValue = numericValue * 100 + calendar.getHourOfDay();
    numericValue = numericValue * 100 + calendar.getMinuteOfHour();
    numericValue = numericValue * 100 + calendar.getSecondOfMinute();
    numericValue = numericValue * 1000 + calendar.getMillisOfSecond();

你的代码有效吗?

您的代码可能将一位数的值格式化为字符串中的一个字符,因此您的字符串通常会太短并且会遗漏一些零。例如:

Correct:        20200722210458862 (2020 07 22 21 04 58 862)
From your code:   202072221458862 (2020  7 22 21  4 58 862)