如何获取 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)
我在 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)