Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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_Date_Time_Date Format - Fatal编程技术网

Java日期和时间格式

Java日期和时间格式,java,date,time,date-format,Java,Date,Time,Date Format,我正在尝试格式化时间,以便用户可以输入时间 b1.setStartTime(JOptionPane.showInputDialog("Enter Start time for Booking: ")); 对于上面的代码,有没有这样做的方法 我已经试着把预订课的开始时间改成时间戳 总的来说,我试图使用这个代码: DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, b1.getStartTime(

我正在尝试格式化时间,以便用户可以输入时间

 b1.setStartTime(JOptionPane.showInputDialog("Enter Start time for Booking: "));
对于上面的代码,有没有这样做的方法

我已经试着把预订课的开始时间改成时间戳 总的来说,我试图使用这个代码:

DateFormat timeFormatter =
    DateFormat.getTimeInstance(DateFormat.SHORT, b1.getStartTime());
但我很难把我的头绕在它周围。我只想让用户输入一个短版本的时间,例如7:20 AM。然后,我可以利用这段时间与SQL数据库进行比较

对我来说,DateFormat.getTimeInstance()似乎是一种方法。如果我要使用此选项,预订课程中的startTime是否应为Date类型,以及如何设置用户输入的格式

String datetime = [code to get time string];
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
Date date = (Date) sdf.parse(datetime);
以后,您可以参考SimpleDataFormat的java文档来了解如何设置格式:

首先,您应该始终检查JOptionPane的结果,以确保用户确实输入了一些内容,并且没有单击“取消”


其次,如果您知道希望用户如何输入时间,则需要(a)告诉他们如何输入时间(b)使用SimpleDataFormat解析时间

 tf = new java.text.SimpleDateFormat ("h:mm a") 
您可以使用它来解析时间:

 Date d = tf.parse (textfield.getText ());
反过来,以以下格式输出日期/时间:

 System.out.println ("Time: " + tf.fomat (date)); 

其他答案是正确的,但已经过时

java.time 该框架内置于Java8及更高版本中。这些类取代了旧的麻烦的日期时间类,如
java.util.date
.Calendar
,&
java.text.SimpleDateFormat
。该团队还建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释

大部分java.time功能都在中向后移植到Java6和Java7,并在中进一步适应Android

LocalTime
LocalTime
类表示一天中没有日期和时区的时间

定义格式化模式。这里看到的模式是12小时时钟,期望小时值为1-12

DateTimeFormatter f = DateTimeFormatter.ofPattern( "h:m a" );
使用该格式化程序进行解析

String input = "7:20 AM";
LocalTime localTime = LocalTime.parse( input , f );
当然,您还应该清理数据输入,并添加代码以捕获由于无效输入而引发的任何异常。为了简洁起见,这里省略了这样的代码

数据库 要查询数据库,如果JDBC驱动程序符合或更高版本,则可以通过
setObject
/
getObject
直接使用
LocalTime
对象

如果没有,请使用添加到旧类中的新方法转换为旧java.sql类型。在这种情况下

…而另一个方向

LocalTime localTime = t.toLocalTime();

我认为这仍然是不对的。。。你忘了AM的符号了/PM@user1291492哦,是的。。。added it now.sdf.parse返回一个日期,无需在此处强制转换任何内容。如果执行此操作:Date d=tf.parse(textfield.getText()),则可以获得NullPointerException、IllegalArgumentException。你不应该这样做!输入必须经过清理,或者必须用try-catch块包围代码以处理异常。@Ozzy:是的,Ozzy,但我想这不是当前的主题。这是糟糕的代码。。。你不能教别人写那样的代码。它只是一个片段,展示了它是如何工作的。当然,用户必须阅读文档以了解如何使用它的条件。我假设例外情况是已知的和编码样式指南等。这不是初学者的教程,而是一个提示。我认为OP是一个初学者,这就是为什么我要说,用try-catch或者先检查输入。
LocalTime localTime = t.toLocalTime();