拜托,我的代码有问题,我有一个方法可以给我一个日历,但它是一个字符串:
lastModif = sftpChannel.lstat(remoteFile).getMtimeString();
输出为String:
示例:
System.out.println(lastModif); || output is ==> Tue Oct 14 12:48:15 WEST 2014
我想格式化这个字符串只有这个outpu:2014-10-14。
我不知道如何转换这个字符串" 10月14日12:48:15 2014年西部"到目前为止。
在此转换后,我将比较两个日期。
谢谢
答案 0 :(得分:0)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(); // Or any other date.
System.out.println(sdf.format(date));
输出将为2014-10-14
答案 1 :(得分:0)
你可以使用几个SimpleDateFormat
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)));
答案 2 :(得分:0)
根据Javadoc,getMtimeString()
返回修改时间的字符串表示,getMTime()
返回自1970年1月1日(纪元)以来的秒数,int
Java通常将日期作为要解析的字符串,或者自纪元以来的long
毫秒数,或者在java.time.LocalDate
的情况下,它可能需要花费的天数时代。
由于getMTime()
返回自纪元以来的秒数,并且每天有86400秒,因此您只需使用它而不是getMtimeString()
并从中创建LocalDate
:
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);
}
}
我使用DateTimeFormatter
格式化日期(您指定的格式为ISO_LOCAL_TIME
的预定义格式化程序),但这与LocalDate
的默认格式相同,所以你可以调用它的toString()
方法。如果您想以不同的格式对其进行格式化,只需创建一个具有所需格式的DateTimeFormatter
。
注意:由于getMTime()
表示自1970年1月1日以来的秒数为32位int
,因此它会受到2038 problem的影响。