You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hybris热文件夹Impex配置中导入MMM d,y,h:mm:ss格式当前时间

SAP Commerce Cloud 2211.9 Impex购物车日期解析错误解决方案

问题背景

在SAP Commerce Cloud 2211.9版本中,通过Impex插入购物车条目时,使用自定义$currentDate变量传递当前日期时间会触发解析错误,但硬编码日期值或使用字段默认值时Impex可正常执行。

原Impex代码

$coupon=appliedCouponCodes[collection-delimiter=|][merge=true]
$user=user[unique=true,translator=com.mycompanyname.core.dataimport.translator.MyCompanyNameOrgCartCustomerFromWebOrgId]
$store=store[unique=true,translator=com.mycompanyname.core.dataimport.translator.MyCompanyNameQuoteSiteToStoreTranslator]

#% impex.definitions.put("$currentDate", java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("MMM d, yyyy, h:mm:ss a")))

INSERT_UPDATE Cart;code[unique=true];$user;site(uid);$store;date[dateformat="MMM d, yyyy hh:mm:ss a"][default="Mar 2, 2004, 1:24:33 p"];currency(isocode)[default=CAD]
;"2300001";"100005_w";"ca.mycompanybasesite.com";"ca.mycompanybasestore.com";$currentDate

触发的错误信息

仅使用$currentDate变量时出现如下解析错误:

INSERT_UPDATE Cart;code[unique=true];user[unique=true,translator=com.avantor.core.dataimport.translator.AvantorOrgCartCustomerFromWebOrgId];site(uid);store[unique=true,translator=com.avantor.core.dataimport.translator.AvantorQuoteSiteToStoreTranslator];"date[dateformat=""MMM dd, yyyy hh:mm:ss a""][default=""Mar 2, 2004, 1:24:33 p""]";currency(isocode)[default=CAD]
",,,,cannot parse date '$currentDate' with specified pattern '""MMM d' due to Unparseable date: ""$currentDate""";2300001;100005_w;ca.mycompanybasesite.com;ca.mycompanybasestore.com;$currentDate

验证步骤

在线Java编译器中执行以下代码,可正常生成符合预期格式的日期字符串:

System.out.println(java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("MMM d, yyyy, h:mm:ss a")))

输出示例:Oct 8, 2023, 10:23:41 AM

核心问题与修复方案

1. 日期格式字符串不匹配

原Impex中date字段的dateformat参数(MMM d, yyyy hh:mm:ss a)与Java代码中的格式(MMM d, yyyy, h:mm:ss a)不一致——少了年份和时间之间的逗号,导致解析逻辑无法识别变量生成的日期字符串。

2. 默认值格式不规范

默认值中的p应改为完整的PM,避免因格式缩写不兼容导致的解析问题。

3. 可选:指定Locale避免区域差异

若服务器区域设置非英文,月份缩写可能不匹配,需在Groovy脚本中指定Locale。

修正后的Impex代码

$coupon=appliedCouponCodes[collection-delimiter=|][merge=true]
$user=user[unique=true,translator=com.mycompanyname.core.dataimport.translator.MyCompanyNameOrgCartCustomerFromWebOrgId]
$store=store[unique=true,translator=com.mycompanyname.core.dataimport.translator.MyCompanyNameQuoteSiteToStoreTranslator]

#% impex.definitions.put("$currentDate", java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("MMM d, yyyy, h:mm:ss a", java.util.Locale.ENGLISH)))

INSERT_UPDATE Cart;code[unique=true];$user;site(uid);$store;date[dateformat="MMM d, yyyy, h:mm:ss a"][default="Mar 2, 2004, 1:24:33 PM"];currency(isocode)[default=CAD]
;"2300001";"100005_w";"ca.mycompanybasesite.com";"ca.mycompanybasestore.com";$currentDate

备选兼容方案

若使用LocalDateTime仍有问题,可切换为Hybris更兼容的java.util.Date:

#% impex.definitions.put("$currentDate", new java.text.SimpleDateFormat("MMM d, yyyy, h:mm:ss a", java.util.Locale.ENGLISH).format(new Date()))

内容的提问来源于stack exchange,提问作者DEBAGNIK KAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 00:40:21