我在这段代码中得到了java.util.IllegalFormatConversionException。我试图在java中使用日期类来打印日期

时间:2018-06-08 11:54:41

标签: java class date exception datetime-format

我在此代码中收到java.util.IllegalFormatConversionException。我正在尝试使用Java中的Date类来打印日期。

package numbersstatics;

public class Date {
    public static void main(String args[]) {

        Date d = new Date();

        String w = String.format("%tc",d);

        System.out.println(w);
    }
}

3 个答案:

答案 0 :(得分:1)

var client = new EasyUAClient(); var endpointDescriptor = new UAEndpointDescriptor("opc.tcp://192.168.216.1:4840/"); endpointDescriptor.UserIdentity = UserIdentity.CreateUserNameIdentity("OpcUaClient", "password"); client.WriteValue(endpointDescriptor, "nsu=SinumerikVarProvider;ns=2;s=/NC/_N_NC_TEA_ACX/$MN_PLC_CYCLIC_TIMEOUT", 1); 这是问题所在。

您的班级也命名为Date d = new Date(),我没有看到任何导入。所以你基本上是创建自己的类的实例而不是Date实例。

尝试java.util.Date

或尝试此代码

import java.util.Date;

注意:添加带有问题的堆栈跟踪总是很好,否则很难找到错误。

答案 1 :(得分:0)

试试这个:

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
String w = format.format(curDate);

System.out.println(w);

或者这个:

Calendar cal = Calendar.getInstance();
System.out.printf("Current time and date: %tc\n", cal);

答案 2 :(得分:0)

让我试着激发您学习和理解异常中的错误消息。我得到了

  

java.util.IllegalFormatConversionException:c!= numbersstatics.Date

numbersstatics.Date指的是Date包中的numbersstatics类。首先要注意的是,这不是您可能想要的Date中的java.util类。这是你自己的课。所以你可能会问自己为什么String.format抱怨你自己的班级。

为了完整起见,c指的是格式规范%tc中的字母。因此,消息显示您无法使用Date格式化自己的%tc课程。这可能会让您意识到您已将自己类的实例传递给String.format

日期已过时

虽然明确提到java.util.Date应该使您的代码有效,但请不要考虑。 Date课程已经过时且设计不佳。今天,我们在java.time,现代Java日期和时间API方面做得更好。例如使用

    ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
    String w = String.format("%tc", zdt); 

在我的电脑上它只是给了

  

Sat Jun 09 18:03:44 IST 2018

您也可以使用DateTimeFormatter,这是大多数程序员所做的。

请允许我添加:如果您将自己的类命名为与您使用的java.time中的类相同,这里ZonedDateTime,您将在编译时通知您的课程没有有你正在调用的now方法,这可能会更清楚,至少你不必等到运行时才能看到它。虽然这是一件小事,但它是成千上万的例子,现代课程对老式课程更有帮助。

链接: Oracle tutorial: Date Time解释如何使用java.time