将系统时间作为字符串转换为时间戳
Convert system time as string to Timestamp
我正在尝试使用 Java 获取计算机时间并使用 SimpleDateFormat
对象按特定顺序对其进行格式化,但它无法格式化;请帮忙
这是我的代码:
java.util.Date parsedDate = null;
try {
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
parsedDate = dateFormat.parse(dateFormat.format(new java.util.Date()));
}catch(ParseException e){
}
Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
使用:
public class Basics {
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
String date = dateFormat.format(System.currentTimeMillis());
System.out.println(date);
}
}
您好 user8545027 我修改了您的代码,现在对我有用了。我还使用 ThreadLocal 使 SimpleDateFormat 对于多线程是安全的。
package com.java;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
private ThreadLocal<SimpleDateFormat> threadSafeDateFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
String formatDate() {
SimpleDateFormat format = threadSafeDateFormat.get();
String timeStamp = format.format(new Date());
return timeStamp;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.formatDate());
}
}
如有任何问题,请告诉我。希望这有帮助。
tl;博士
LocalTime
.now( ZoneId.of( "Pacific/Auckland" ) )
.toString()
java.time
您正在使用麻烦的旧遗留 类,现在已被现代 java.time 类 取代。完全避免使用旧的 类。
以 UTC 格式获取当前时刻,精度可达纳秒。
Instant instant = Instant.now() ;
要通过特定区域的挂钟时间查看同一时刻,请应用时区。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atone( z ) ;
要仅处理没有日期和时区的时间,请提取一个 LocalTime
对象。
LocalTime lt = zdt.toLocalTime() ;
如果 "format to specific order" 你的意思是排序......这些对象知道如何排序。不需要仅用于排序的字符串。
List<LocalTime> times = new ArrayList<>() ;
times.add( lt ) ;
…
Collections.sort( times ) ;
生成一个字符串以显示给用户。 java.time 类 默认为 generating/parsing 字符串使用标准 ISO 8601 格式。
String output = lt.toString() ;
对于其他格式,请使用 DateTimeFormatter
。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "HH:mm" ) ;
String output = lt.format( f ) ;
所有这些都在 Stack Overflow 上处理过很多次。搜索更多信息和讨论。
我正在尝试使用 Java 获取计算机时间并使用 SimpleDateFormat
对象按特定顺序对其进行格式化,但它无法格式化;请帮忙
这是我的代码:
java.util.Date parsedDate = null;
try {
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
parsedDate = dateFormat.parse(dateFormat.format(new java.util.Date()));
}catch(ParseException e){
}
Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
使用:
public class Basics {
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
String date = dateFormat.format(System.currentTimeMillis());
System.out.println(date);
}
}
您好 user8545027 我修改了您的代码,现在对我有用了。我还使用 ThreadLocal 使 SimpleDateFormat 对于多线程是安全的。
package com.java;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
private ThreadLocal<SimpleDateFormat> threadSafeDateFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
String formatDate() {
SimpleDateFormat format = threadSafeDateFormat.get();
String timeStamp = format.format(new Date());
return timeStamp;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.formatDate());
}
}
如有任何问题,请告诉我。希望这有帮助。
tl;博士
LocalTime
.now( ZoneId.of( "Pacific/Auckland" ) )
.toString()
java.time
您正在使用麻烦的旧遗留 类,现在已被现代 java.time 类 取代。完全避免使用旧的 类。
以 UTC 格式获取当前时刻,精度可达纳秒。
Instant instant = Instant.now() ;
要通过特定区域的挂钟时间查看同一时刻,请应用时区。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atone( z ) ;
要仅处理没有日期和时区的时间,请提取一个 LocalTime
对象。
LocalTime lt = zdt.toLocalTime() ;
如果 "format to specific order" 你的意思是排序......这些对象知道如何排序。不需要仅用于排序的字符串。
List<LocalTime> times = new ArrayList<>() ;
times.add( lt ) ;
…
Collections.sort( times ) ;
生成一个字符串以显示给用户。 java.time 类 默认为 generating/parsing 字符串使用标准 ISO 8601 格式。
String output = lt.toString() ;
对于其他格式,请使用 DateTimeFormatter
。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "HH:mm" ) ;
String output = lt.format( f ) ;
所有这些都在 Stack Overflow 上处理过很多次。搜索更多信息和讨论。