如何将DateTime与特定的字符串格式进行相互转换(两种方式,例如给定的Format为“ yyyyMMdd”)?


132

我在转换字符串格式的日期时间时遇到问题,但无法使用"yyyyMMdd"格式进行转换。

我的代码是:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

现在的日期时间字符串是什么格式?
Falle1234

11
您的代码段与该问题有什么关系?
Darin Dimitrov

2
我有点不清楚;您正在使用日期或DateTime对象的字符串表示形式吗?假设它是一个DateTime对象,您可以调用obj.ToString("yyyyMMdd")
内森·泰勒

实际上,TPOCDate2已经是一个变量,我只想将tpoc2 [0]中的元素转换为yyyyMMdd格式。希望这能回答您的问题
Ashutosh 2010年

你被困在某个地方吗?
DariuszWoźniak

Answers:


224

如果您在日期中使用格式为“ ddMMyyyy”的字符串并将其转换为“ yyyyMMdd”,则可以这样:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
坚持使用您的代码,此代码很好用DateTime.TryParse(stringValue,out outputInDateTime);
DJ'14年

64

解析日期时间:

要解析DateTime,请使用以下方法之一:

另外,您可以使用try-parse模式:

阅读有关自定义日期和时间格式字符串的更多信息。

将DateTime转换为字符串:

要以“ yyyyMMdd”格式返回DateTime作为字符串,可以使用ToStringmethod。

  • 程式码片段范例: string date = DateTime.ToString("yyyyMMdd");
  • 注意,大写的M表示月份,小写的m表示分钟。

您的情况:

在您的情况下,假设您不想处理日期格式不同或遗漏的情况,则使用起来最方便ParseExact

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
这是一个古老的话题,但是对于那些进行搜索的人来说,上面的链接“特定于文化的格式”现在是固定链接。这是最新的和有用的自定义日期和时间格式字符串

40

您可以将字符串转换为如下所示的DateTime值:

DateTime date = DateTime.Parse(something);

您可以将DateTime值转换为如下格式的字符串:

date.ToString("yyyyMMdd");

11

字符串为yyyy-MM-dd日期格式:示例:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

如果您也想将DATE作为字符串与TIME一起使用。我们可以这样:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
分钟应该是小“ m”!“ yyyyMMdd-HHmmss”
CeOnSql

6

DateTime.TryParseExact()如果要与特定日期格式匹配,请使用

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

您可以使用DateTime.TryParse()代替DateTime.Parse()
有了TryParse()你有一个返回值是否成功,并与Parse()你必须处理异常


5

只需采用这种方式即可。

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

快乐的编码:)


3

没有使用yyyy / mm / dd的字符串,我需要yyyyMMdd格式

如果只需要从字符串中删除斜杠,就不替换它们吗?

例:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString现在应为“ 20130328”。

少一点矫kill过正:)



2

根据属性名称,您似乎正在尝试通过赋值将字符串转换为日期:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

这可能是由于当前的UI文化所致,因此分配时无法正确解释日期字符串。


没有使用yyyy / mm / dd的字符串,我需要yyyyMMdd格式
Ashutosh 2010年

并且在进行claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString(“ yyyyMMdd”);的同时 它给出了一些构建错误。“ string.ToString(System.IFormatProvider)”的最佳重载方法匹配有一些无效的论点
Ashutosh

@Matt-真的吗?您编辑了4年以上的回复,甚至没有将其标记为添加标签的答案?那是OCD的一个严重坏案例。
彼得

1

从C#6:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

结果将是:“ 2019-01-15T11:46:33.2752667Z”


0

我在搜索此答案时遇到的一种更简单的方法是:

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

我有什么价值DateTime?喜欢 DateTime newDate = DateTime.Parse(Session["date"].ToString());吗?
WTFZane

0

您可以尝试这些代码

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

要么

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
为了爱上帝(我们的救主哈拉姆贝),永远不要使用Convert.ToDateTime ...这个东西太慢了(〜100ms)!只需使用ParseExact或TryParse-waaaaay更快!!!
Koshera
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.