Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void Formatting_test() {
- Console.WriteLine(string.Format(MyDateFormatter.Create(),"Today's date [ds] -> {0,-20:ds}",DateTime.Now));
- Console.WriteLine(string.Format(MyDateFormatter.Create(),"Today's file date [ddf] -> {0,-60:ddf}",DateTime.Now));
- Console.WriteLine(string.Format(MyDateFormatter.Create(),"Today's file time [ddb] -> {0,-60:ddb}",DateTime.Now));
- Console.WriteLine(string.Format(MyDateFormatter.Create(),"Today's file date [fd] -> {0,-60:fd}",DateTime.Now));
- Console.WriteLine(string.Format(MyDateFormatter.Create(),"Today's file time [ft] -> {0,-60:ft}",DateTime.Now));
- }
- public class MyDateFormatter:IFormatProvider,ICustomFormatter {
- public static MyDateFormatter Create() {
- return new MyDateFormatter();
- }
- IFormatProvider _parent; // Allows consumers to chain format providers
- public MyDateFormatter() : this(CultureInfo.CurrentCulture) { }
- public MyDateFormatter(IFormatProvider parent) {
- _parent = parent;
- }
- public object GetFormat(Type formatType) {
- if(formatType == typeof(ICustomFormatter))
- return this;
- return null;
- }
- public string Format(string format,object arg,IFormatProvider formatProvider) {
- bool ignore = false;
- string[] tokens = new string[] {"ds","ddf","ddb","fd","ft" };
- string formatLowered = format.ToLowerInvariant();
- if(arg == null)
- ignore = true;
- else {
- if(!tokens.Contains(formatLowered))
- ignore = true;
- }
- DateTime dtarget = DateTime.MinValue;
- if(!ignore) {
- if(arg is DateTime)
- dtarget = Convert.ToDateTime(arg);
- else {
- if(!DateTime.TryParse(arg.ToString(),out dtarget))
- ignore = true;
- }
- }
- if(ignore)
- return string.Format(_parent,"{0:" + (format == "" ? "D": format) + "}",arg);
- if(formatLowered == "ds") {
- return dtarget.ToShortDateString();
- }
- else if(formatLowered == "ddf" || formatLowered == "fd") {
- //"Mar31_2011";
- return dtarget.ToString("MMMdd_yyyy");
- }
- else if(formatLowered == "ddb" || formatLowered == "ft") {
- return dtarget.ToString("MMM_d_yyyy_hmmtt");
- }
- return dtarget.ToString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment