在java中将字符串转换为FileTime

在java中将字符串转换为FileTime,java,swing,timestamp,java.nio.file,Java,Swing,Timestamp,Java.nio.file,我有这个问题。 问题: 我正在制作一个程序,其中我通过jformattedtextfield从用户处获取输入,即字符串格式,然后我希望该值是用户选择的文件的创建时间 所以我需要使用setTimes()函数,它只接受fileTime格式。 因此,问题是::如何将字符串转换为合格的fileTime,以便可以由.nio.attribute中预定义的函数setTimes()使用 这将实现以下目的: 您必须像在文本字段中一样更改日期格式(新的SimpleDataFormat(…),并删除main方法

我有这个问题。 问题: 我正在制作一个程序,其中我通过
jformattedtextfield
从用户处获取输入,即字符串格式,然后我希望该值是用户选择的文件的创建时间

所以我需要使用setTimes()函数,它只接受fileTime格式。 因此,问题是::如何将字符串转换为合格的fileTime,以便可以由.nio.attribute中预定义的函数setTimes()使用


这将实现以下目的:

您必须像在文本字段中一样更改日期格式(新的SimpleDataFormat(…),并删除main方法

    public static void main(final String[] args) {
// TODO Auto-generated method stub
String date = "01.01.2013 10:00:10";
long milis;
try {
    milis = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").parse(date)
        .getTime();
    FileTime fileTime = FileTime.fromMillis(milis);
    System.out
        .println("Time: " + fileTime.toString());
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

这将实现以下目的:

您必须像在文本字段中一样更改日期格式(新的SimpleDataFormat(…),并删除main方法

    public static void main(final String[] args) {
// TODO Auto-generated method stub
String date = "01.01.2013 10:00:10";
long milis;
try {
    milis = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").parse(date)
        .getTime();
    FileTime fileTime = FileTime.fromMillis(milis);
    System.out
        .println("Time: " + fileTime.toString());
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

根据输入的格式(我假设它类似于
“dd/MM/yy HH:MM:ss”
),您可以使用
SimpleDateFormat
将其转换为
日期,从
日期
可以使用
Date.getTime()获得毫秒
并最终使用该值使用
java.nio.file.attribute.FileTime.fromMillis(long)

像这样的东西应该可以做到:

String text = textField.getText();
Date date = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(text);
FileTime time = FileTime.fromMillis(date.getTime());

根据输入的格式(我假设它类似于
“dd/MM/yy HH:MM:ss”
),您可以使用
SimpleDateFormat
将其转换为
日期,从
日期
可以使用
Date.getTime()获得毫秒
并最终使用该值使用
java.nio.file.attribute.FileTime.fromMillis(long)

像这样的东西应该可以做到:

String text = textField.getText();
Date date = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(text);
FileTime time = FileTime.fromMillis(date.getTime());

输入是什么样的?toString()不工作吗?我想你需要限制用户以特定的格式输入日期字符串。这不是假设,用户将以dd/MM/yy HH:MM:ss格式输入。输入是什么样的?toString()不工作吗工作?我认为您需要限制用户以特定格式输入日期字符串。这并不是假设用户将以dd/MM/yy HH:MM:ss格式输入日期字符串。!@Manuel..我尝试过这个方法,但不起作用,并给出错误:::java.lang.string无法转换为java.nio.file.attribute。FileTime@Manuel..我试过了,但这不是w工作并给出错误:java.lang.String无法转换为java.nio.file.attribute.FileTime我尝试了此方法,但不起作用并给出错误:java.lang.String无法转换为java.nio.file.attribute.FileTime在Interface.actionPerformed(Interface.java:166)处好的,这很有效…非常感谢…但我还面临一个问题…文件时间我用来节省创建时间的是在JAVA中更新CTime创建时间,但在os中没有更新。例如,当我打开属性时,它显示旧的时间戳。我正在处理Win 8…你有什么idea@user2500367您可以使用以下代码段来更新创建时间:
BasicFileAttributeView fileAttributeView=Files。getFileAttributeView(file,BasicFileAttributeView.class);fileAttributeView.setTimes(null,null,FileTime.fromMillis(System.currentTimeMillis()-7*24*3600*1000));
我尝试过这个方法,但不起作用,并给出错误:java.lang.String无法在Interface.actionPerformed处转换为java.nio.file.attribute.FileTime(Interface.java:166)好的,这很有效……非常感谢……但我还面临一个问题……文件时间我用来节省创建时间的是在JAVA中更新CTime创建时间,但在os中没有更新。例如,当我打开属性时,它显示旧的时间戳。我正在处理Win 8…你有什么idea@user2500367您可以使用以下代码段来更新创建时间:
BasicFileAttributeView fileAttributeView=Files。getFileAttributeView(file,BasicFileAttributeView.class);fileAttributeView.setTimes(null,null,FileTime.fromMillis(System.currentTimeMillis()-7*24*3600*1000));