如何使用c#asp.net拆分字符串值

时间:2015-08-18 06:38:39

标签: c# asp.net datetime

我想将此2015-08-11 10:59:41.830值拆分为datetime数据类型格式,并使用c#asp.net将其转换为以下格式。

August 11, 45 minutes ago

给定的日期时间(i.e-2015-08-11 10:59:41.830)将与当前日期时间进行比较,并显示如上格式。请帮我这样做。

4 个答案:

答案 0 :(得分:2)

您需要使用DateTime.Parse(string s)解析日期,一旦完成,您将获取当前日期(DateTime.Now)并从中减去解析日期。

这应该产生TimeSpan结构。假设两个日期都引用相同的日期,则可以通过从解析日期(日和月)和时间跨度(小时,分钟和秒)中获取所需的部分来构造字符串。

答案 1 :(得分:0)

对于您的特定格式,您可以尝试ParseExact() "yyyy-MM-dd HH:mm:ss.fff"

static void Main(string[] args)
{
    //Given that previous and and now is the same day
    DateTime previous = DateTime.ParseExact("2015-08-18 10:59:41.830", "yyyy-MM-dd HH:mm:ss.fff", 
        System.Globalization.CultureInfo.InvariantCulture);
    DateTime now = DateTime.Now;
    double value = now.Subtract(previous).TotalMinutes;

    Console.WriteLine(string.Format("{0:MMMM dd}, {1} minutes ago", now, (int)value));
    Console.ReadLine();
}

答案 2 :(得分:0)

npinti已经explained了,这里是代码部分;

string s = "2015-08-18 10:59:41.830";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    var ts = dt - DateTime.Now;
    Console.WriteLine("{0}, {1} minutes ago", 
                        dt.ToString("MMMM dd", CultureInfo.InvariantCulture),
                        ts.Minutes);
}

我在当地时间运行此代码2015-08-18 09:50,因此会生成August 18, 9 minutes ago

请记住,Minutes property代表TimeSpan对象的分钟组件,其范围从-5959。如果您想根据TimeSpan对象值获取所有分钟数,可以使用TotalMinutes property(或甚至(int)ts.TotalMinutes)。

答案 3 :(得分:0)

你需要这个

  var yourString = "2015-08-11 10:59:41.830";
  var oldDate = DateTime.ParseExact(yourString, "yyyy-MM-dd hh:mm:ss.fff", CultureInfo.InvariantCulture);
  //The above two steps are only for if you have date in `string` type, but if you have date in `DateTime` format then skip these.
  var difference = DateTime.Now - oldDate; 
  //here old date is parsed from string or your date in `DateTime` format

  var result = string.Format("{0:MMMM dd}, {1} minutes ago", oldDate, difference.Minutes);