Java 以字符串格式获取日期最经济的方法是什么?每次创建日期对象或通过日历对象使用日期实例

Java 以字符串格式获取日期最经济的方法是什么?每次创建日期对象或通过日历对象使用日期实例,java,performance,date,calendar,Java,Performance,Date,Calendar,我需要经常获取当前时间,并将其转换为字符串并将其标记到文件中,或者根据业务将其作为文件名。我了解到,创建许多对象会阻碍性能 现在我有两种方法来实现它,第一种是每次创建一个日期对象来获取当前时间 //Using Date object SimpleDateFormat sdf = new SimpleDateFormat("MMDDHHmm"); String timeNow = sdf.format(new Date()); System.out.println(timeNow); 第二种方法

我需要经常获取当前时间,并将其转换为字符串并将其标记到文件中,或者根据业务将其作为文件名。我了解到,创建许多对象会阻碍性能

现在我有两种方法来实现它,第一种是每次创建一个日期对象来获取当前时间

//Using Date object
SimpleDateFormat sdf = new SimpleDateFormat("MMDDHHmm");
String timeNow = sdf.format(new Date());
System.out.println(timeNow);
第二种方法是使用getTime()方法创建日历对象并获取日期实例


哪种方法在使用的时间和内存方面产生更好的性能?如果有任何其他方法比这两种方法更有效,请分享

第一种方法更快,但是它太少了,你应该使用任何看起来更吸引你的代码。日历也将创建一个新的日期,并基于当前时间,就像您的第一个代码一样,除了在许多方法调用中。

第一个更快,但是它太少了,您应该使用任何看起来更吸引您的代码。日历也将创建一个新日期,并以当前时间为基础,就像您的第一个代码一样,除了许多方法调用之外。

创建日历对象是一个相对缓慢而复杂的操作,它必须补偿日期和时间固有的所有异常,如时区、夏令时等

最好使用Date对象作为第一个示例,有关Date、Calendar和SimpleDateFormat性能指标的比较,请参阅


另一种方法可以是使用,请参阅以获取JodaTime和Calendar之间的性能比较。虽然Java Date和JodaTime之间的性能差异可能可以忽略不计,但JodaTime通常被认为是处理日期和时间的更好方法。出于您的目的,仅为时间戳导入JodaTime可能会有点过头。

创建日历对象是一个相对缓慢而复杂的操作,它必须补偿日期和时间固有的所有奇怪之处,如时区、夏令时等

最好使用Date对象作为第一个示例,有关Date、Calendar和SimpleDateFormat性能指标的比较,请参阅



另一种方法可以是使用,请参阅以获取JodaTime和Calendar之间的性能比较。虽然Java Date和JodaTime之间的性能差异可能可以忽略不计,但JodaTime通常被认为是处理日期和时间的更好方法。不过,出于您的目的,仅为时间戳导入JodaTime可能有点过头了。

如果您在同步或数据库处理方面需要提高速度,最好的方法是使用JodaTime库,它比SimpleDataFormat快5倍。

如果您在同步或数据库处理方面需要提高速度,最好的方法是使用JodaTime库,它比SimpleDateFormat快5倍。

在这些情况下,您的衡量标准是什么,差异有多大?您认为如何,我不认为使用
Calendar
获取日期对象可能更有效。。另外,您可能希望使用
Calendar.getInstance()
而不是
new gregoriacalendar()
@Mark我将使用它来记录活动和创建日志文件名。与常规日志API不同,我希望消息内容中包含日期。通常是答案,因此从长远来看,差异将是显著的,而不是经常只需要一次day@RC我使用gregorianalendar()与当前日历同步。闰年计算。。etc各不相同。我一直在想getTime()不会创建新对象,这就是为什么在这些情况下,您的度量值是多少,差异有多大?您认为呢,我不认为使用
Calendar
获取日期对象可能更有效。。另外,您可能希望使用
Calendar.getInstance()
而不是
new gregoriacalendar()
@Mark我将使用它来记录活动和创建日志文件名。与常规日志API不同,我希望消息内容中包含日期。通常是答案,因此从长远来看,差异将是显著的,而不是经常只需要一次day@RC我使用gregorianalendar()与当前日历同步。闰年计算。。etc各不相同。我想getTime()不会创建新对象,这就是原因感谢@Wabs的帮助:)TFS链接,它的信息比我需要的要多,但我得到了底线感谢@Wabs的帮助:)TFS链接,它包含的信息比我需要的要多,但我得到了我从未想过的方法调用的底线:)感谢XabsterI不该这么说的见解。这不是“因为更多的方法调用”。请不要通过避免方法调用来优化代码。不是那样的,噢!好的:)我用的是第一个,逻辑也很明确。我从来没有想过方法调用:)谢谢你的洞察力,XabsterI不应该这么说。这不是“因为更多的方法调用”。请不要通过避免方法调用来优化代码。不是那样的,噢!好的:)我用的是第一个,逻辑也很明确。这应该是一个注释这应该是一个注释
//Using Calendar object to get date instance
SimpleDateFormat sdf = new SimpleDateFormat("MMDDHHmm");
Calendar cal = new GregorianCalendar();
String timeNow = sdf.format(cal.getTime());
System.out.println(timeNow);