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

Acumatica网格显示时间比数据库值早4小时如何解决

可行解决方案如下:

  1. 修正DAC字段配置
    确认PXDBDateAndTime属性配置无误,同时将默认值的来源修改为带时间的业务时间,避免默认值仅保留日期部分:
#region TodaysDate
public abstract class todaysDate : PX.Data.IBqlField
{
}

[PXDBDateAndTime(UseTimeZone = false, PreserveTime = true, DisplayNameDate = "Date", DisplayNameTime = "Time")]
// 替换原有的AccessInfo.businessDate为带时间的类型
[PXDefault(typeof(AccessInfo.businessDateTime))]
public virtual DateTime? TodaysDate { get; set; }
#endregion

如果需要彻底阻断时区转换逻辑,可在字段的Getter中强制指定时间的Kind为未指定类型:

private DateTime? _TodaysDate;
public virtual DateTime? TodaysDate 
{ 
    get 
    { 
        return _TodaysDate == null ? null : DateTime.SpecifyKind(_TodaysDate.Value, DateTimeKind.Unspecified); 
    }
    set { _TodaysDate = value; }
}
#endregion
  1. 修改ASPX页面控件属性
    当前控件配置会触发前端二次时区转换,需要修改两处配置:
  • 行模板内的PXDateTimeEdit控件,将AlreadyLocalized改为True,关闭前端时区转换逻辑:
<px:PXDateTimeEdit ID="edTodaysDate" runat="server" AlreadyLocalized="True" DataField="TodaysDate" IsClientControl="False" InputMask="hh:mm">
</px:PXDateTimeEdit>
  • 网格列配置中给TodaysDate列添加AlreadyLocalized="True"属性:
<px:PXGridColumn DataField="TodaysDate" Width="102px" DisplayFormat="g" AlreadyLocalized="True">
</px:PXGridColumn>
  1. 验证配置生效
    修改完成后清除浏览器缓存和Acumatica系统缓存,重新打开页面验证时间显示是否和数据库存储值完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:04