重新安排国际日期时间的字符串

时间:2014-11-23 01:49:21

标签: c# asp.net

我在C#中调用一个库,它以单个字符串格式返回日期和时间,如

2014年11月22日下午3:14

每个月的第1天,第15天凌晨2点,从2014年11月23日开始 - 触发器将于2015年2月26日凌晨12:00:00结束。

我需要它看起来像

2014年11月22日下午3:14

每个月的第1天,第15天凌晨2点,从2014年11月23日开始 - 触发器将于2015年2月26日凌晨12:00:00结束。

如何修改此字符串以切换月份和日期以使其适合内部用户?

1 个答案:

答案 0 :(得分:0)

尝试String.Format

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone


// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}", dt);            // "3/9/2008"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}", dt);    // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}", dt);            // "03/09/08"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

修改

var source= "At 3:14 PM on 11/22/2014";
// get the last 10 characters from the string just the DATE
var justDate = source.Substring(source.Length - 10); // justDate = "11/22/2014"
// Parse string justDate to DateTime
DateTime dt = DateTime.ParseExact(justDate , "MM/dd/yyyy", CultureInfo.InvariantCulture);

编辑02

应该为你做这件事

const string PATTERN = @"([0-9]){1,2}\/([0-9]){1,2}\/([0-9]){4}";
const string INPUT = "At 2:00 AM on day 1, 15 of every month, starting 11/23/2014 - Trigger expires at 2/26/2015 2/2/2015  02/02/2015 12:00:00 AM";
var correctString = INPUT;
var regex = new Regex(PATTERN);
var match = regex.Match(INPUT);
while (match.Success) {
    var dt = DateTime.ParseExact(match.Value, "M/d/yyyy", CultureInfo.InvariantCulture);
    var dt2 = String.Format("{0:dd/MM/yyyy}", dt);
    correctString = correctString.Replace(match.Value, dt2);
    match = match.NextMatch();
}