timespan使用方法详解

  using System;

  using System.Collections.Generic;

  class TimeSpanUtility

  {

  public static string FormatString(TimeSpan aTimeSpan)

  {

  string newFormat = aTimeSpan.ToString("d'd 'h'h 'm'm 's's'");

  // 1d 3h 43m 23s

  return newFormat;

  }

  public static string TimeSpanInWords(TimeSpan aTimeSpan)

  {

  List timeStrings = new List();

  int[] timeParts = new[] { aTimeSpan.Days, aTimeSpan.Hours, aTimeSpan.Minutes, aTimeSpan.Seconds };

  string[] timeUnits = new[] { "day", "hour", "minute", "second" };

  for (int i = 0; i < timeParts.Length; i++)

  {

  if (timeParts[i] > 0)

  {

  timeStrings.Add(string.Format("{0} {1}", timeParts[i], Pluralize(timeParts[i], timeUnits[i])));

  }

  }

  return timeStrings.Count != 0 ? string.Join(", ", timeStrings.ToArray()) : "0 seconds";

  }

  private static string Pluralize(int n, string unit)

  {

  if (string.IsNullOrEmpty(unit)) return string.Empty;

  n = Math.Abs(n); // -1 should be singular, too

  return unit + (n == 1 ? string.Empty : "s");

  }

  }

  public class Client

  {

  static void Main()

  {

  // 12 days, 23 hours, 24 minutes, 2 seconds.

  TimeSpan span = new TimeSpan(12, 23, 24, 2);

  Console.WriteLine(TimeSpanUtility.TimeSpanInWords(span)); // Output: 12 days, 23 hours, 24 minutes, 2 seconds

  Console.WriteLine(TimeSpanUtility.FormatString(span)); // Output: 12d 23h 24m 2s

  }

  }