Set date based on input year

0
Hi all, I want to create a date, based on a year. For example: if I enter StartYear 2020, it should create a StartDate 2020-09-01. If I enter 2021, it should create a StartDate 2021-09-01. I tried to do this with parseDateTime and the DateTime function, but it didn't work. What is the best practice for this?
asked
8 answers
0

Unparseable date: "01-09-null"

means that $SchoolYear/StartYear is empty.

answered
0

Maybe remove the validation rules at the domain model.. ;)

answered
0

Doesn't this work?

parseDateTime('01-09-' + $StartYear, 'dd-MM-yyyy')

answered
0

 

I tried that, but while doesn't give any error in Studio Pro, it crashes when triggering the Microflow.

 

An error has occurred while handling the request. [User 'Anonymous_b21aa44c-9573-4a79-b641-54a2513d83cc' with session id '25fd19e8-XXXX-XXXX-XXXX-XXXXXXXX2fd6' and roles 'Administrator']

--------

com.mendix.modules.microflowengine.MicroflowException: Failed to evaluate expression, error occurred on line 1, character 1
parseDateTime('01-09-' + $SchoolYear/StartYear, 'dd-MM-yyyy')
^
	at MyFirstModule.OCH_SetStartDate (CreateOrChangeVariable : 'Create Date and time variable')

Advanced stacktrace:
	at com.mendix.languages.mxexpressions.MxExpression.evaluate(MxExpression.scala:21)

Caused by: com.mendix.languages.expressions.ExpressionException: java.text.ParseException: Unparseable date: "01-09-null"
	at com.mendix.languages.expressions.Expr.evaluate(Expr.java:34)

Caused by: java.text.ParseException: Unparseable date: "01-09-null"
	at java.base/java.text.DateFormat.parse(DateFormat.java:395)
	at com.mendix.languages.expressions.DateTimeFunctionCallEvaluator.evaluateParseDateTime(DateTimeFunctionCallEvaluator.java:66)
	at com.mendix.languages.expressions.FunctionCallExpr.evaluateExpression(FunctionCallExpr.java:120)
	at com.mendix.languages.expressions.Expr.evaluate(Expr.java:30)
	at com.mendix.languages.mxexpressions.MxExpression.evaluate(MxExpression.scala:14)
	at com.mendix.modules.microflowengine.actions.variable.CreateOrChangeVariableAction.execute(CreateOrChangeVariableAction.scala:32)
	at com.mendix.modules.microflowengine.actions.variable.CreateOrChangeVariableAction.execute(CreateOrChangeVariableAction.scala:13)
	at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.java:47)
	at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.java:215)
	at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.java:165)
	at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:46)
	at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)
	at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:49)
	at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:54)
	at com.mendix.basis.actionmanagement.ActionManagerBase$1.execute(ActionManagerBase.java:147)
	at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
	at com.mendix.basis.actionmanagement.ActionManagerBase.executeSync(ActionManagerBase.java:152)
	at com.mendix.basis.actionmanagement.MicroflowCallBuilderImpl.execute(MicroflowCallBuilderImpl.scala:32)
	at com.mendix.webui.actions.client.ExecuteMicroflowAction.runMicroflow(ExecuteMicroflowAction.scala:76)
	at com.mendix.webui.actions.client.ExecuteMicroflowAction.$anonfun$apply$3(ExecuteMicroflowAction.scala:42)
	at com.mendix.webui.actions.client.RegularClientAction$Helpers$.$anonfun$liftEither$1(RegularClientAction.scala:29)
	at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.$anonfun$apply$4(RegularClientAction.scala:55)
	at com.mendix.webui.requesthandling.helpers.StateHandling.withState(StateHandling.scala:35)
	at com.mendix.webui.requesthandling.helpers.StateHandling.withState$(StateHandling.scala:32)
	at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.withState(RegularClientAction.scala:45)
	at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:53)
	at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:45)
	at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:43)
	at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:22)
	at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$3(RegularClientAction.scala:109)
	at scala.util.Try$.apply(Try.scala:213)
	at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2(RegularClientAction.scala:109)
	at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2$adapted(RegularClientAction.scala:107)
	at com.mendix.webui.requesthandling.helpers.ContextHandling.$anonfun$inContext$5(ContextHandling.scala:47)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at com.mendix.basis.actionmanagement.IMonitoredAction$$anon$1.execute(IMonitoredAction.scala:47)
	at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
	at com.mendix.basis.actionmanagement.IMonitoredAction.monitor(IMonitoredAction.scala:49)
	at com.mendix.basis.actionmanagement.IMonitoredAction.monitor$(IMonitoredAction.scala:25)
	at com.mendix.webui.requesthandling.helpers.ContextHandling$ClientMonitoredAction.monitor(ContextHandling.scala:59)
	at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:47)
	at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:27)
	at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:86)
	at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:24)
	at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:19)
	at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:86)
	at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$1(RegularClientAction.scala:107)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest(ProfileHandling.scala:14)
	at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest$(ProfileHandling.scala:10)
	at com.mendix.webui.actions.client.RegularClientAction.profileRequest(RegularClientAction.scala:86)
	at com.mendix.webui.actions.client.RegularClientAction.execute(RegularClientAction.scala:104)
	at com.mendix.webui.requesthandling.ClientRequestHandler.handleAction(ClientRequestHandler.scala:104)
	at com.mendix.webui.requesthandling.ClientRequestHandler.processRequest(ClientRequestHandler.scala:81)
	at com.mendix.externalinterface.connector.RequestHandler.doProcessRequest(RequestHandler.java:40)
	at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:76)
	at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:73)
	at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
	at com.mendix.external.connector.MxRuntimeConnector.processRequest(MxRuntimeConnector.java:79)
	at com.mendix.basis.impl.MxRuntimeImpl.processRequest(MxRuntimeImpl.java:937)
	at com.mendix.m2ee.appcontainer.server.handler.RuntimeHandler.service(RuntimeHandler.java:42)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:867)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:502)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
	at java.base/java.lang.Thread.run(Thread.java:834)
answered
0

I create the SchoolYear from a create button in a datagrid. Could that be the problem?

answered
0

I don't know the specifics of your application and at what moment you are trying to do the parseDateTime, but you need to make sure a SchoolYear object exists containing a valid StartYear before you do a parseDateTime in this way.

It might be a strategy to use a microflow action button instead of a create-button and in the microflow create a schoolyear and set a value for StartYear.

answered
0

It works when I edit a schoolyear.. It triggers on change of the StartYear, so weird that it doesn't work when creating a new year. I tried the microflow action button with a create of the object first, but the SchoolYear remains empty when I look in the debugger.

answered
0

Yes, the object remained empty because of validation rules in the domain model. Upon removal the OCH microflow worked correctly and the object was filled.

answered