我在此代码中收到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);
}
}
答案 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
。