为什么我需要在 Grails 中解析日期?

发布于 2024-10-31 17:20:16 字数 544 浏览 3 评论 0原文

我的处境很不幸,我需要在处理遗留数据的 Grails 应用程序中使用复合 id。这意味着我必须重写控制器中的一些操作,但当我这样做时,我对无法直接使用日期参数作为动态方法的参数这一事实感到震惊。

我首先需要解析日期字符串,然后再将其传递给动态方法,而不是仅仅执行 MyLegacyObj.findBySystemIdAndLogDate(params.systemId, params.logDate)。更复杂的是,我不知道日期字符串的格式是什么(直到我在输出中添加了大量 log.debug() 字符串)。所以现在我有一些看起来像这样的代码

def formatter = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy")
MyLegacyObj.findBySystemIdAndLogDate(params.systemId, formatter.parse(params.logDate));

这感觉不是最佳的,更不用说危险了(如果日期格式随区域设置改变怎么办?)?推荐的方法是什么?我真的需要解析日期吗?

I am in the unfortunate position that I need to use a composite id in a Grails app where I work with legacy data. This means I have to override some actions in the controller, but as I did this I was struck by the fact that I could not use use a date argument directly as a parameter to a dynamic method.

Instead of just doing MyLegacyObj.findBySystemIdAndLogDate(params.systemId, params.logDate), I first needed to parse the date string before giving it to the dynamic method. To further complicate matters I had no idea what format the date string had (until I added lots of log.debug() string to the output). So now I have a bit of code looking like this

def formatter = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy")
MyLegacyObj.findBySystemIdAndLogDate(params.systemId, formatter.parse(params.logDate));

This feels unoptimal, no to say dangerous (what if the date format changes with the locale?)? What would be a recommended way of doing this, and do I really need to parse dates at all?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事↓在人 2024-11-07 17:20:16

Date 是一个相当复杂的对象,而 params 只是 String,因此 Date 是分部分提交的。当分配 x.properties = params 时,它是由各个部分“神奇地”组装而成的。

命令对象如果您向其中添加 Date 字段,它将为您完成这项工作。

它与方法的动态或静态调用无关。您呈现 Date 编辑器的 GSP 也可能会产生干扰。

Date is a pretty complex object and params are just Strings, so Date is submitted in parts. It is "magically" assembled from the parts when assigning x.properties = params.

Command object will do the work for you, if you add a Date field to it.

It has nothing to do with methods' dynamic or static invocation. Your GSP that renders Date editor might interfere too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文