java:将日历字符串转换为格式化日期
请注意,我的代码中有一个问题,我有一个方法可以给我一个日历,但它是一个字符串:java:将日历字符串转换为格式化日期,java,Java,请注意,我的代码中有一个问题,我有一个方法可以给我一个日历,但它是一个字符串: lastModif = sftpChannel.lstat(remoteFile).getMtimeString(); 输出为字符串: 例如: System.out.println(lastModif); || output is ==> Tue Oct 14 12:48:15 WEST 2014 我想格式化这个字符串,使其具有以下输出:2014-10-14 我不知道如何将字符串“Oct 14 12:48
lastModif = sftpChannel.lstat(remoteFile).getMtimeString();
输出为字符串:
例如:
System.out.println(lastModif); || output is ==> Tue Oct 14 12:48:15 WEST 2014
我想格式化这个字符串,使其具有以下输出:2014-10-14
我不知道如何将字符串“Oct 14 12:48:15 WEST 2014”转换为日期
在这个转换之后,我将比较两个日期
多谢各位
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(); // Or any other date.
System.out.println(sdf.format(date));
输出将是2014-10-14
您可以使用两个s-一个解析您得到的字符串,另一个重新格式化它:
String lastModif = sftpChannel.lstat(remoteFile).getMtimeString();
DateFormat parser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(formatter.format(parser.parse(lastModif)));
根据Javadoc,返回修改时间的字符串表示形式,并以int
的形式返回自1970年1月1日(纪元)以来的秒数
Java通常将日期作为要解析的字符串,或从纪元开始的long
毫秒数,或者(在的情况下)从纪元开始的天数
由于getMTime()
import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE;
import java.time.LocalDate;
public class DaysToDate {
public static void main(String[] args) {
// ... whatever you need to do to get sftpChannel ...
int lastModif = sftpChannel.lstat(remoteFile).getMTime();
long days = lastModif / 86400L;
LocalDate date = LocalDate.ofEpochDay(days);
System.out.println(date.format(ISO_LOCAL_DATE));
System.out.println(date);
}
}
我使用了格式化日期(您指定的格式有一个预定义的格式化程序,名为ISO_LOCAL_TIME
),但它与LocalDate
的默认格式相同,因此您可以调用它的toString()
方法。如果要以不同的格式设置,只需使用所需的格式创建一个DateTimeFormatter
注意:由于getMTime()
以32位int
表示自1970年1月1日以来的秒数,因此它会受到影响。我也没有。西部是什么时区?SimpleDateFormat@ElliottFrisch:@mond14lastModif
的数据类型到底是什么?可能的重复