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

ASP.NET中SQL DateTime绑定TextBox显示不一致问题

解决ASP.NET中DateTime绑定到TextBox显示不一致的问题

问题分析

你的SQL中存储的时间是2023-02-08 16:01:49.153,但TextBox显示为2/8/2023 09:07:13 PM,核心原因有两点:

  • 默认ToString()会使用服务器区域格式,导致显示样式不符合需求
  • 存在时区转换问题,数据库时间被自动转换成了服务器本地时区时间

解决方案

方案1:绑定指定精确格式,处理空值

直接在Eval绑定阶段指定与SQL一致的时间格式字符串,同时兼容数据库可能的空值:

<asp:TextBox ID="dateTxt" runat="server" 
    Text='<%# Eval("date") != DBNull.Value ? ((DateTime)Eval("date")).ToString("yyyy-MM-dd HH:mm:ss.fff") : string.Empty %>' 
    class="form-control">
</asp:TextBox>
  • yyyy-MM-dd对应年-月-日的标准格式
  • HH:mm:ss.fff对应24小时制的时:分:秒.三位毫秒
  • 用三目运算符处理DBNull,避免空值转换报错

方案2:禁用时区转换,保留原始时间

默认SqlDataAdapter会将数据库的DateTime转换为服务器本地时区时间,可通过修改连接字符串禁用该转换:
在数据库连接字符串末尾添加;DateTimeKind=Unspecified,示例:

string conStr = "Data Source=你的服务器地址;Initial Catalog=你的数据库名;User ID=账号;Password=密码;DateTimeKind=Unspecified";

添加后读取的DateTime会保留数据库中的原始时间信息,不会被自动转换时区。

方案3:SQL查询时直接格式化返回字符串

修改SQL语句,直接将DateTime字段格式化为目标字符串后返回,绑定阶段直接取值即可:

SELECT CONVERT(varchar, date, 121) AS date FROM ThisTable where stage = 'pending'
  • CONVERT(varchar, date, 121)会将DateTime转换为yyyy-MM-dd HH:mm:ss.fff格式的字符串
  • 此时TextBox绑定代码可简化为:
<asp:TextBox ID="dateTxt" runat="server" Text='<%# Eval("date") %>' class="form-control"></asp:TextBox>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:30:59