如何分离日期和时间?

3
我是一名有用的助手,可以为您翻译文本。

我在mysql数据库列中有一个日期时间列,我需要将其显示在单独的日期和时间文本框中。

我的数据库中的日期时间格式为2014-12-24 17:23:35。我想要的格式是:

Date : 2014-12-24  
Time : 17:23:35

我怎样才能在C#中做到这件事?


http://msdn.microsoft.com/en-us/library/system.datetime.date%28v=vs.110%29.aspx - Maria Ines Parnisari
你应该查看 DateTime.TryParseExact。 - gimpycpu
这是WinForms、WPF、ASP.NET 还是其他的?文本框需要可编辑还是只读? - Tim S.
我的数据库中的日期时间格式。数据库不会以“格式”存储日期。对于任何数据库引擎来说,它只是一个数字,格式取决于之后客户端如何解释它。 - Alejandro
可能是获取系统日期并拆分日,月和年的重复问题。@peer提供了一个非常好的答案,使用内置功能。 - jww
@TimS。这是一个网页,用于编辑页面,因此文本框应该是可编辑的。 - vim
7个回答

12
DateTime dtValue;  // load your date & time into this variable
TextBox1.Text = dtValue.ToString("yyyy-MM-dd");
TextBox2.Text = dtValue.ToString("HH:mm:ss");

1
我们如何将字符串加载到日期时间变量中? - vim
2
非常感谢,您的解决方案完全有效。 - vim
这是一个绝对糟糕的想法。我们永远不应该将日期和时间值视为字符串处理。你将花费相当多的时间来格式化和解析,而且错误的潜在可能性也很大。使用专门用于处理日期和时间值的控件,而不是文本框。 - Darek
1
我个人不使用文本框来接收日期和时间输入,但是将文本框用作只读显示日期和时间是完全可以的。 - Tien Dinh
这个方法简短、简单而且易懂 ;) - Tahir77667

9
您可以将datetime列检索为DateTime对象,然后进行两次格式化-一次使用忽略时间部分的格式,另一次使用忽略日期部分的自定义格式。
var d = new DateTime(2014,12,26,17,21,30);
Console.WriteLine("Date: {0:d/M/yyyy} Time: {0:hh:mm:ss}", d);

Demo.

or

var d = new DateTime(2014,12,26,17,21,30);
var dtPart = d.ToShortDateString();
var tmPart = d.ToShortTimeString();

1
你也可以使用以下代码:DateTime.ToShortDateString(); DateTime.ToShortTimeString();这样可以使代码更加简洁易读。 - prospector

2

如果您仍然遇到麻烦,我找到了一个简单的方法来解决它。

    result= "7/26/2017 12:00:00 AM"; Whatever your variable is
    string[] Separate = result.Split (' ');
    string desiredDate = Separate [0];
    Debug.Log (desiredDate);

如果您需要时间,只需创建一个具有第二个数组元素的变量。

这个简直太棒了!!!! - undefined

2
如果您已经有一个 DateTime 对象,那么这很简单:
  • Date 属性仅返回日期部分
  • TimeOfDay 属性仅返回时间部分

@Jonathaan,我该如何在C#中将其分成两个不同的文本框? - vim

1

我的数据库中的日期时间格式为2014-12-24 17:23:35

数据库中的日期时间没有格式。它以其本机二进制形式存储。如果您只需要显示,例如不希望更新,则可以在同一数据库列中使用两次,同时利用两种字符串格式,一种仅用于日期部分,另一种仅用于时间部分,例如在 .Net 应用程序中,您可以使用“d”和“t”。

以下是一些代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>
<%
    var dateTimeColumnFromDatabase = DateTime.Now;
%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <p>Date: <%= dateTimeColumnFromDatabase.ToString("d") %></p>
    <p>Time: <%= dateTimeColumnFromDatabase.ToString("t") %></p>

</body>
</html>

当然,你需要将DateTime.Now替换为你的数据库代码。

如果你使用任何第三方控件,它们通常都有格式属性,你可以在其中指定所需的显示格式。


我无法在数据库中获取两列数据。在数据库中只有一个日期时间列。我需要通过C#代码在ASP.NET页面上显示它。 - vim
我没有在数据库中说过两列。显示的是两列,这就是你要求的。 - Darek
@Dqarek,但是这段代码能将数据库日期时间列分割成日期和时间吗? - vim
数据库的日期时间列包含日期和时间两个部分。我在这里进行了简化,因为它们并不是独立的部分。在显示或编辑时,您可以单独或同时处理它们。如果您查看 .Net 文档,您会发现 DateTime 对象具有用于日期和时间的独立属性,但它们是 DateTime 值的一部分。明白吗? - Darek

0
DateTime Date = DateTime.Parse(txtDate.Text).ToShortDateString(); // For Date
DateTime Date = DateTime.Parse(txtDate.Text).ToShortTimeString(); // for time

0
DateTime dt = DateTime.Now;               //Gets the current date
string datetime = dt.ToString();          //converts the datetime value to string
string[] DateTime = datetime.Split(' ');  //splitting the date from time with the help of space delimeter
string Date = DateTime[0];                //saving the date value from the string array
string Time = DateTime[1];                //saving the time value

**NOTE:** The value of the index position will vary depending on how the DateTime 
value is stored on your server or in your database if you're fetching from one.

Output: 10/16/2019 1:38:24 PM
        10/16/2019 1:38:24 PM
        ["10/16/2019","1:38:24","PM"]
        10/16/2019
        1:38:24

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接