Tea*_*eek 26 .net c# ado.net datareader
我用数据读取器读取了这种格式的字符串.如何使用类似格式阅读日期?
while (MyReader.Read())
{
TextBox1.Text = (string)MyReader["Note"];
}
Run Code Online (Sandbox Code Playgroud)
Suk*_*van 36
尝试如下:
while (MyReader.Read())
{
TextBox1.Text = Convert.ToDateTime(MyReader["DateField"]).ToString("dd/MM/yyyy");
}
Run Code Online (Sandbox Code Playgroud)
在ToString()
方法中,您可以根据您的要求更改数据格式.
Ric*_*ard 12
如果查询的列具有适当的类型
var dateString = MyReader.GetDateTime(MyReader.GetOrdinal("column")).ToString(myDateFormat)
Run Code Online (Sandbox Code Playgroud)
如果查询的列实际上是一个字符串,那么请查看其他答案.
这可能看起来有点偏离主题,但这是我想知道当你在c#中读取一个列为dateTime时会发生什么的帖子.该帖子反映了我希望能够找到关于这种机制的信息. 如果您担心utc和时区,请继续阅读
我做了一点研究,因为我总是非常警惕DateTime作为一个类,因为它自动假设你正在使用什么时区,因为它太容易混淆当地时间和utc时间.
我在这里要避免的是DateTime去'看看我正在运行的计算机是在时区x,因此这个时间也必须在时区x,当我被问到我的价值时我会回复,就好像我在那个时区'
我试图读一个datetime2
专栏.
你将从sql server返回的日期时间将最终成为Kind.Unspecified
这似乎意味着它被视为UTC,这是我想要的.
在阅读date
专栏时,DateTime
即使它没有时间也更加容易被时区搞砸(因为它是在午夜时).
我当然认为这是更安全的方式来读取DateTime,因为我怀疑它可能会被sql server中的设置或c#中的静态设置修改:
var time = reader.GetDateTime(1);
var utcTime = new DateTime(time.Ticks, DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
从那里你可以得到组件(日,月,年)等格式,并格式化你喜欢的方式.
如果你拥有的实际上是一个日期+一个时间,那么Utc可能不是你想要的那样 - 因为你在客户端上乱搞,你可能需要先将它转换为当地时间(取决于时间的含义是什么) ).然而,这开辟了一大堆蠕虫..如果你需要这样做,我建议使用像诺达时间这样的库.有TimeZoneInfo
标准库,但在简单调查,它似乎并不有一个适当的集的时区.您可以TimeZoneInfo
使用该方法查看提供的列表TimeZoneInfo.GetSystemTimeZones();
我还发现sql server management studio在显示之前不会将时间转换为本地时间.这是一种解脱!
(DateTime)MyReader["ColumnName"];
Run Code Online (Sandbox Code Playgroud)
要么
Convert.ToDateTime(MyReader["ColumnName"]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
91817 次 |
最近记录: |