我在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结束。
如何修改此字符串以切换月份和日期以使其适合内部用户?
答案 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();
}