Java 添加日期
我用这种方法在日期上加了天 这是标准程序, 但不幸的是,我的Pentaho应用程序在Java 添加日期,java,date,pentaho,kettle,java.util.date,Java,Date,Pentaho,Kettle,Java.util.date,我用这种方法在日期上加了天 这是标准程序, 但不幸的是,我的Pentaho应用程序在c.setTime(dt)上中断,我显然不知道原因,因为例外情况没有任何意义。 因此,另一个选项是解析日期并提取月、年、日和+1到日,但我必须处理2月和奇数月。 我脑子里只有这两个选择 有谁能给我提供其他选择吗 堆栈跟踪为 An unexpected error occurred in Spoon: (class: Processor, method: processRow signature: (Lorg/
c.setTime(dt)上中断代码>,我显然不知道原因,因为例外情况没有任何意义。
因此,另一个选项是解析日期并提取月、年、日和+1到日,但我必须处理2月
和奇数月
。
我脑子里只有这两个选择
有谁能给我提供其他选择吗
堆栈跟踪为
An unexpected error occurred in Spoon:
(class: Processor, method: processRow signature: (Lorg/pentaho/di/trans/step/StepMetaInterface;Lorg/pentaho/di/trans/step/StepDataInterface;)Z) Register 11 contains wrong type
java.lang.VerifyError: (class: Processor, method: processRow signature: (Lorg/pentaho/di/trans/step/StepMetaInterface;Lorg/pentaho/di/trans/step/StepDataInterface;)Z) Register 11 contains wrong type
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at org.pentaho.di.trans.steps.userdefinedjavaclass.UserDefinedJavaClassMeta.getStepIOMeta(UserDefinedJavaClassMeta.java:338)
at org.pentaho.di.trans.TransPainter.drawLine(TransPainter.java:899)
at org.pentaho.di.trans.TransPainter.drawHop(TransPainter.java:510)
at org.pentaho.di.trans.TransPainter.drawHop(TransPainter.java:499)
at org.pentaho.di.trans.TransPainter.drawTrans(TransPainter.java:184)
at org.pentaho.di.trans.TransPainter.buildTransformationImage(TransPainter.java:144)
at org.pentaho.di.ui.spoon.trans.TransGraph.getTransformationImage(TransGraph.java:2728)
at org.pentaho.di.ui.spoon.trans.TransGraph.paintControl(TransGraph.java:2691)
at org.pentaho.di.ui.spoon.trans.TransGraph$4.paintControl(TransGraph.java:487)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Composite.WM_PAINT(Unknown Source)
at org.eclipse.swt.widgets.Control.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Canvas.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1169)
at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:6940)
at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:553)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:134)
试试看
一个例子
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());// out put Thu Aug 22 16:31:56 IST 2013
cal.add(Calendar.DATE,1);
System.out.println(cal.getTime());// out put Fri Aug 23 16:31:56 IST 2013
看看这个
如果你用这种方法试一下,应该可以。请留下评论或在此发布您的代码,例外情况除外 另一种方法是使用
此外,如果您使用的是Kettle/Pentaho数据集成,则可以使用计算器步骤。提供的计算之一是“日期A+B天”。我经常使用它,它对我一直都很有效。我也遇到了同样的问题,下面是对我有效的解决方案
这是用户定义的Java类中的一个问题
这是在尝试访问在try/catch块外的try/catch块内设置的变量时造成的(即,即使在之前声明,但在try/catch中未设置,仍会出现此错误)
Soruce-请不要在问题标题中写下已经标记的内容。完整的堆栈跟踪是什么?您应该让日历完成艰苦的工作,它的设计是为了解决我们不知道的所有计时问题(例如,闰秒等)。就像@mabbas暗示的那样,您应该找出c.setTime(dt)
中断的原因。所以我同意他的观点:完整的堆栈跟踪是什么?和:您是如何获得dt的?dt
需要表示一个固定日期还是当前日期?@JelleFresen请看一看,这个错误似乎与c.setTime(dt)
无关,我在堆栈跟踪中看不到对setTime的方法调用,也看不到任何使用日期/日历值的方法的指示。请看一下对的描述。也许你正在加载一个过时的类文件?尝试清理项目,重新编译所有内容,然后再次运行。这将在当前日期中添加1,问题是我想添加一个特定日期,然后使用Cal.set(Calender.date,your_date);请看我的问题,这就是我得到数据的地方,特别是在用户定义的java类中
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());// out put Thu Aug 22 16:31:56 IST 2013
cal.add(Calendar.DATE,1);
System.out.println(cal.getTime());// out put Fri Aug 23 16:31:56 IST 2013
DateTime dateTime = new DateTime(date);
dateTime = dateTime.plusDays(1);