I need to get the current timestamp in Java, with the format of MM/DD/YYYY h:mm:ss AM/PM
,
For example: 06/01/2000 10:01:50 AM
I need it to be Threadsafe as well.
Can I utilize something like this?
java.util.Date date = new java.util.Date();
System.out.println(new Timestamp(date.getTime()));
Or the examples discussed at the link here.
I did it like this when I wanted a tmiestamp
String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());
Hope it helps :) As a newbie I think it's self-explanatory
I think you also need import java.text.SimpleDateFormat; header for it to work :))
well sometimes this is also useful.
import java.util.Date;
public class DisplayDate {
public static void main(String args[]) {
// Instantiate an object
Date date = new Date();
// display time and date
System.out.println(date.toString());}}
sample output: Mon Jul 03 19:07:15 IST 2017
Here is the same kind of code but using the third-party library Joda-Time 2.3.
In real life, I would specify a time zone, as relying on default zone is usually a bad practice. But omitted here for simplicity of example.
org.joda.time.DateTime now = new DateTime();
org.joda.time.format.DateTimeFormatter formatter = DateTimeFormat.forPattern( "MM/dd/yyyy h:mm:ss a" );
String nowAsString = formatter.print( now );
System.out.println( "nowAsString: " + nowAsString );
When run…
nowAsString: 11/28/2013 11:28:15 PM
The fact that SimpleDateFormat
is not thread-safe does not mean you cannot use it.
What that only means is that you must not use a single (potentially, but not necessarily static
) instance that gets accessed from several threads at once.
Instead, just make sure you create a fresh SimpleDateFormat
for each thread. Instances created as local variables inside a method are safe by definition, because they cannot be reached from any concurrent threads.
You might want to take a look at the ThreadLocal
class, although I would recommend to just create a new instance wherever you need one. You can, of course, have the format definition defined as a static final String DATE_FORMAT_PATTERN = "...";
somewhere and use that for each new instance.
You can make use of java.util.Date
with direct date string format:
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Print a Timestamp in java, using the java.sql.Timestamp.
import java.sql.Timestamp;
import java.util.Date;
public class GetCurrentTimeStamp {
public static void main( String[] args ){
java.util.Date date= new java.util.Date();
System.out.println(new Timestamp(date.getTime()));
}
}
This prints:
2014-08-07 17:34:16.664
Print a Timestamp in Java using SimpleDateFormat on a one-liner.
import java.util.Date;
import java.text.SimpleDateFormat;
class Runner{
public static void main(String[] args){
System.out.println(
new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date()));
}
}
Prints:
08/14/2014 14:10:38
Java date format legend:
G Era designation Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
Try this single line solution :
import java.util.Date;
String timestamp =
new java.text.SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(new Date());
As of Java 8+ you can use the java.time package. Specifically, use DateTimeFormatterBuilder and DateTimeFormatter to format the patterns and literals.
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MM").appendLiteral("/")
.appendPattern("dd").appendLiteral("/")
.appendPattern("yyyy").appendLiteral(" ")
.appendPattern("hh").appendLiteral(":")
.appendPattern("mm").appendLiteral(":")
.appendPattern("ss").appendLiteral(" ")
.appendPattern("a")
.toFormatter();
System.out.println(LocalDateTime.now().format(formatter));
The output ...
06/22/2015 11:59:14 AM
Or if you want different time zone…
// system default
System.out.println(formatter.withZone(ZoneId.systemDefault()).format(Instant.now()));
// Chicago
System.out.println(formatter.withZone(ZoneId.of("America/Chicago")).format(Instant.now()));
// Kathmandu
System.out.println(formatter.withZone(ZoneId.of("Asia/Kathmandu")).format(Instant.now()));
The output ...
06/22/2015 12:38:42 PM
06/22/2015 02:08:42 AM
06/22/2015 12:53:42 PM
String.format("{0:dddd, MMMM d, yyyy hh:mm tt}", dt);
Source: Stackoverflow.com