我看到这在Java中已弃用:
Date origin = new Date("July 5, 2318 12:00:00");
我想弄清楚的是我能做些什么才能获得完全相同的功能。我的例子的完整背景是:
Date origin = new Date("July 5, 2318 12:00:00");
double stardatesPerYear = 56844.9 * 34367056.4;
double milliseconds = origin.getTime() + stardatesPerYear;
Date dateResult = new Date();
dateResult.setTime((long)milliseconds);
结果是dateResult
将Date对象具有以下字符串表示形式:
5月31日星期六12:24:44 CDT 2380
我并不关心日期的确切格式,因为我是结果的准确性以及它可以被解析的事实。
我见过使用Calendar
和SimpleDateFormat
的引用,但这些似乎都没有给我相同的输出,可能是因为我做错了。
可能重复更新:
我不知道我的问题是否像建议的那样重复,但可能是。我试过这样的例子:
String string = "July 5, 2318";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
try {
Date date = format.parse(string);
} catch (ParseException e) {
e.printStackTrace();
}
替换原来的Date origin
声明似乎很多。
我想我感到好奇的是给出了我的完整代码示例,即:
Date origin = new Date("July 5, 2318 12:00:00");
double stardatesPerYear = 56844.9 * 34367056.4;
double milliseconds = origin.getTime() + stardatesPerYear;
Date dateResult = new Date();
dateResult.setTime((long)milliseconds);
替换代码第一行的最有效和最有效的代码是什么,因为我指出我的第一行使用了已弃用的功能?
答案 0 :(得分:1)
使用SimpleDateFormat
一行更改为两行:
DateFormat dateformat = new SimpleDateFormat("MMMM dd, yyyy hh:mm:ss", Locale.US);
Date date = dateformat.parse("July 5, 2318 12:00:00");
获得相同的输出:
DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy hh:mm:ss", Locale.US);
Date date = fmt.parse("July 5, 2318 12:00:00");
date.setTime(date.getTime() + (long)stardatesPerYear);
3行与4行(我不计算stardatesPerYear初始化):)
答案 1 :(得分:1)
这适用于在Java 8中测试:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM d, yyyy HH:mm:ss");
Date origin = Date.from(LocalDateTime.parse("July 5, 2318 12:00:00", dtf).toInstant(ZoneOffset.UTC));
答案 2 :(得分:0)
您可以使用以下任何一种方式:
1)
SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd yyyy hh:mm:ss");
String dateInString = "July 5, 2318 12:00:00";
Date date = sdf.parse(dateInString);
2)
Calendar calendar = new GregorianCalendar(2318,Calendar.JULY,5, 12, 0, 0);
Date date = calendar.getTime();
3)
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.YEAR, 2318);
calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DAY_OF_MONTH, 5);
calendar.set(Calendar.HOUR, 12);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);