[英]Convert unusual string into date time
我有一個以“ 1 {yy} {MM} {dd}”格式輸出日期的系統,並且我試圖找到一種很好的方法將其解析回實際日期。 目前,我正在使用此:
var value = "1110825";
var z = Enumerable.Range(1,3).Select(i => int.Parse(value.Substring(i, 2))).ToList();
var d = new DateTime(2000 + z[0], z[1], z[2]);
但是我敢肯定有一種更清潔/更有效的方法嗎?
我已經嘗試過DT.ParseExact,但是找不到合適的格式字符串來使用。
這對我有用:
using System;
using System.Globalization;
public class Test
{
static void Main()
{
var value = "1110825";
DateTime dt = DateTime.ParseExact(value, "1yyMMdd",
CultureInfo.InvariantCulture);
Console.WriteLine(dt);
}
}
(如果您需要以除異常之外的任何其他方式來處理無效數據,則當然可以使用TryParseExact
。)
這種格式的細微變化是“'1'yyMMdd”的格式模式-注意1周圍的撇號。引用1強制將其視為模式中的“文字”。 在這種情況下,這並不重要,但是如果您實際具有諸如“ y110825”的值,則需要引用y
以確保不將其視為年份指定符。
您可以使用DateTime.ParseExact:
這是1979年12月26日的示例:
var parseback = DateTime.ParseExact("1791226", "1yyMMdd",
System.Globalization.CultureInfo.CurrentCulture);
只需使用此代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DateTimeConvert { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { label1.Text= ConvDate_as_str(textBox1.Text); } public string ConvDate_as_str(string dateFormat) { try { char[] ch = dateFormat.ToCharArray(); string[] sps = dateFormat.Split(' '); string[] spd = sps[0].Split('.'); dateFormat = spd[0] + ":" + spd[1]+" "+sps[1]; DateTime dt = new DateTime(); dt = Convert.ToDateTime(dateFormat); return dt.Hour.ToString("00") + dt.Minute.ToString("00"); } catch (Exception ex) { return "Enter Correct Format like <5.12 pm>"; } } private void button2_Click(object sender, EventArgs e) { label2.Text = ConvDate_as_date(textBox2.Text); } public string ConvDate_as_date(string stringFormat) { try { string hour = stringFormat.Substring(0, 2); string min = stringFormat.Substring(2, 2); DateTime dt = new DateTime(); dt = Convert.ToDateTime(hour+":"+min); return String.Format("{0:t}", dt); ; } catch (Exception ex) { return "Please Enter Correct format like <0559>"; } } } }
使用DateTime.ParseExact(string s, string format, IFormatProvider provider)
一個例子
DateTime.ParseExact("1110825", "1yyMMdd", CultureInfo.InvariantCulture);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.