英文:
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小时制
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(hour) +
String.valueOf(minute) +
String.valueOf(second) +
String.valueOf(millisecond);
return Long.valueOf(dt);
我需要仅使用joda的DateTime
。
英文:
I'm working in a Java project and I need to get a numeric "value" of a DateTime
in Java. For example: the datetime is 2020-07-22T17:40:56.235+05:30
and I want to convert it into 20200722174056235
. I am using DateTime
methods like getDate()
, getYear()
to make this kind of value.
Is there any way or any method to covert a datetime into such a numeric value?
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);
I need to use joda DateTime
only.
答案1
得分: 3
使用格式化程序。
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();
你的代码是否正常工作?
你的代码可能会将一位数值格式化为字符串中的一个字符,因此你的字符串通常会太短,缺少一些零。例如:
正确的: 20200722210458862 (2020年 07月 22日 21时 04分 58秒 862毫秒)
从你的代码中得到的: 202072221458862 (2020年 7月 22日 21时 4分 58秒 862毫秒)
英文:
Use a formatter.
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmssSSS");
DateTime calendar = new DateTime();
String formatted = calendar.toString(formatter);
Long numericValue = Long.parseLong(formatted);
System.out.println(numericValue);
Output when I ran the code in my time zone just now:
> 20200722210458862
Alternate way: Only if this is for a library method that I expect to be called often and where efficiency may be a concern, I might consider not formatting and parsing a string. The following gives the same result.
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();
Did your code work?
Your code probably formatted one-digit values into just one character in the string, so your string would typically be too short and miss some zeroes. For example:
Correct: 20200722210458862 (2020 07 22 21 04 58 862)
From your code: 202072221458862 (2020 7 22 21 4 58 862)
答案2
得分: -1
以下是代码片段的翻译:
public class ValidateString {
public static void main(String[] args) {
String pattern = "yyyyMMddHHmmss"; // 根据您的需求更改模式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
}
}
英文:
Here is the code snippet
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);
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论