我怎样才能将“2010年3月25日星期一......”之类的字符串转换为25/03/10? 还有,这可能吗?
答案 0 :(得分:15)
您可以使用DateTime.ParseExact
,但我认为在尝试解析之前必须先删除“On”。
编辑根据format documentation,您可能不必在“开始”之后删除。
var theDate = DateTime.ParseExact(theString, "On dddd ddth MMMM yyy",
CultureInfo.InvariantCulture);
应该这样做。
答案 1 :(得分:2)
单独使用日期解析不能这样做。适用于25日的任何格式字符串将在第22或第23次失败。就个人而言,我会使用正则表达式将日期删除为可解析的内容。
string s = "On Monday 25th March 2010";
string pattern = @"^[^0-9]+(\d+)(\w\w)?";
string clean = Regex.Replace(s, pattern,@"$1");
string result = DateTime.ParseExact(clean,"dd MMMM yyyy",
CultureInfo.InvariantCulture)
.ToString("dd/MM/yy");
答案 2 :(得分:1)
正如克劳斯比斯科所指出的,DateTime.ParseExact
是要走的路。
我相信你需要的正确格式字符串是(测试过的):
@"On dddd dd\t\h MMMM yyyy..."
't'和'h'字符需要转义,因为它们具有特殊意义(分别为'AM / PM'和'小时')。
但请注意,解析器将执行一些验证检查。特别是,你的例子将无法解析,因为2010年3月25日恰好是星期四;试试看:
"On Thursday 25th March 2010..."
对于输出,您需要的格式字符串是:
"dd/MM/yy"
答案 3 :(得分:-1)
使用它:
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>";
}
}
}
}