为什么我的日期在 c# 中只设置为 2 位数字

本文关键字:设置 数字 我的 日期 为什么 | 更新日期: 2023-09-27 18:35:35

在下面的代码片段中,我设置了TDate = new DateTime(2013,12,31),但是当我查看对象数据时,TDate设置为12/31/13(我没有显示时间)而不是12/31/2013。当我把它发送到 SqlServer 时,SqlServer 自然会抱怨 datetime2 的限制。 为什么年份没有设置为2013年?请帮忙 - 我该怎么做才能拥有 12/31/2013?

trxs.Add(new Transaction 
{
  AccountPK = string.Format("{0}{1}", t.acctno, Prefs.BCode),
  Balance = 0.0m,
  BCode = Prefs.BCode,
  ChqNo = t.chq_no.ToString(),
  Details = t.details,
  RowID = (int)t.roid,
  TDate = new DateTime(2013, 12, 31),
  TrxAmount = t.fx_amt,
  TrxDate = string.Format("{0:dd/MM/yyyy}", t.tdate),
  TrxRef = (int)t.tref,
  TrxType = t.trx_type
 });

引用的类是:

    public class Transaction
{
    public string AccountPK { get; set; }
    public int RowID { get; set; }
    public DateTime TDate { get; set; }
    public int TrxRef { get; set; }
    public string Details { get; set; }
    public decimal TrxAmount { get; set; }
    public decimal Balance { get; set; }
    public string ChqNo { get; set; }
    public string TrxDate { get; set; }
    public string BCode { get; set; }
    public string TrxType { get; set; }
}

为什么我的日期在 c# 中只设置为 2 位数字

在 web.config 中指定区域性。

例如
<system.web>
<globalization uiCulture="en" culture="en-GB"/>
</system.web>

或在代码中

 Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");

谨慎

SQL Server 必须与 .NET 代码具有相同的区域性。您可以从此 MSDN 链接在 SQL Server 中设置区域性:https://msdn.microsoft.com/en-GB/library/ms190682.aspx

如果这两种文化匹配,您将不再有这个问题。