Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:将日历字符串转换为格式化日期_Java - Fatal编程技术网

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:@mond14
lastModif
的数据类型到底是什么?可能的重复