Convert DateTimeOffset to Date format in aspnet core

sblb 831 Reputation points


In the class FilePath I've a class

   public class FilePath  
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd}")]  
         public DateTimeOffset Created { get; set; }  

This class is associated to the view [dbo].[FilePath]


The table is rendering with ajax, and I would like to change the format of the date?

What is a best way to format the date in ajax or directly in the class?
But when I tried to put an annotation to format the date directly in class, it didn't take into account. Do you have any suggestion?

Thanks in advance !

A set of technologies in the .NET Framework for building web applications and XML web services.
2,604 questions
{count} votes

Accepted answer
  1. Xinran Shen - MSFT 1,041 Reputation points Microsoft Employee

    Hi @sblb ,
    The format of Created is the default format of DateTimeOffset after be serialized, SO if you want to Convert DateTimeOffset to DateTime, You can use the following generic method to Convert DateTimeOffset to Date in class.

    The following example defines a method named ConvertFromDateTimeOffset that converts DateTimeOffset values to DateTime values. Based on its offset, it determines whether the DateTimeOffset value is a UTC time, a local time, or some other time, and defines the returned date and time value's Kind property accordingly.

    public static class Change  
            public static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)  
                if (dateTime.Offset.Equals(TimeSpan.Zero))  
                    return dateTime.UtcDateTime;  
                else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))  
                    return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);  
                    return dateTime.DateTime;  

    After you submit the table, You can Convert DateTimeOffset to Date in your action, Then convert it into the time format you want and store it in the database.

            public IActionResult Privacy(FilePath model)  
                var dateTime = Change.ConvertFromDateTimeOffset(model.Created);  
                // your other code  


    If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    Best regards,
    Xinran Shen

1 additional answer

Sort by: Most helpful
  1. SurferOnWww 861 Reputation points

    When the DateTime object is serialized to the JSON string by the Newtonsoft.Json (Core 2.x or earlier) or System.Text.Json (Core 3.x or later), the serialized string results in the format of "2017-08-26T15:39:32.6330349+09:00" which is the same as your "Created" result.

    You say:

    The table is rendering with ajax

    Therefore I guess that there is such serialization process somewhere between the database and your "Created" result.

    No comments