如何在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
相关产品推荐
相关产品推荐

