Formatting DateTimeField in Django












0















When saving timestamp in Django's DateTimeField using auto_now_add this way:



creation_timestamp = models.DateTimeField(auto_now_add=True)


the field is saved with miliseconds:



2018-11-20T15:58:44.767594-06:00


I want to format this to be displayed without miliseconds:



2018-11-20T15:58:44-06:00


But the only option I could come up with does not exactly shows what I need:



format="%Y.%m.%dT%H:%M:%S%z" gives me 2018.11.20T15:58:44-0600
How do I format this field the way I need?



Alternatively I'd rather save DateTimeField without milliseconds at all but does auto_now_add allow to do this sort of thing?










share|improve this question



























    0















    When saving timestamp in Django's DateTimeField using auto_now_add this way:



    creation_timestamp = models.DateTimeField(auto_now_add=True)


    the field is saved with miliseconds:



    2018-11-20T15:58:44.767594-06:00


    I want to format this to be displayed without miliseconds:



    2018-11-20T15:58:44-06:00


    But the only option I could come up with does not exactly shows what I need:



    format="%Y.%m.%dT%H:%M:%S%z" gives me 2018.11.20T15:58:44-0600
    How do I format this field the way I need?



    Alternatively I'd rather save DateTimeField without milliseconds at all but does auto_now_add allow to do this sort of thing?










    share|improve this question

























      0












      0








      0








      When saving timestamp in Django's DateTimeField using auto_now_add this way:



      creation_timestamp = models.DateTimeField(auto_now_add=True)


      the field is saved with miliseconds:



      2018-11-20T15:58:44.767594-06:00


      I want to format this to be displayed without miliseconds:



      2018-11-20T15:58:44-06:00


      But the only option I could come up with does not exactly shows what I need:



      format="%Y.%m.%dT%H:%M:%S%z" gives me 2018.11.20T15:58:44-0600
      How do I format this field the way I need?



      Alternatively I'd rather save DateTimeField without milliseconds at all but does auto_now_add allow to do this sort of thing?










      share|improve this question














      When saving timestamp in Django's DateTimeField using auto_now_add this way:



      creation_timestamp = models.DateTimeField(auto_now_add=True)


      the field is saved with miliseconds:



      2018-11-20T15:58:44.767594-06:00


      I want to format this to be displayed without miliseconds:



      2018-11-20T15:58:44-06:00


      But the only option I could come up with does not exactly shows what I need:



      format="%Y.%m.%dT%H:%M:%S%z" gives me 2018.11.20T15:58:44-0600
      How do I format this field the way I need?



      Alternatively I'd rather save DateTimeField without milliseconds at all but does auto_now_add allow to do this sort of thing?







      python django django-models






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 22:17









      Stan RedouteStan Redoute

      361220




      361220
























          3 Answers
          3






          active

          oldest

          votes


















          1














          You can override DateTimeField's value_to_string method and add the changes there. For example:



          class CustomDateTimeField(models.DateTimeField):
          def value_to_string(self, obj):
          val = self.value_from_object(obj)
          if val:
          val.replace(microsecond=0)
          return val.isoformat()
          return ''


          And use it in model:



           created = CustomDateTimeField(auto_now_add=True)





          share|improve this answer































            0














            If you want to format it on when displaying it, you can use: creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")



            You can also make DateTimeField to save it in that format, but this would request a set of changes which will apply system wide:



            In your settings file set the follwing:




            1. DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"


            2. L10N=False to make sore localization data doesn't take precedent when it comes to dates format.

            3. USE_TZ=False


            But, consider the fact that this changes will apply by default to all date time objects from your project.






            share|improve this answer
























            • Key thing here is that I want to preserve timezone. But your answer contains only date and time

              – Stan Redoute
              Nov 20 '18 at 22:33



















            0














            I think you will have to use isoformat. Look at that answer:



            Show the : character in the timezone offset using datetime.strftime






            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402437%2fformatting-datetimefield-in-django%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              You can override DateTimeField's value_to_string method and add the changes there. For example:



              class CustomDateTimeField(models.DateTimeField):
              def value_to_string(self, obj):
              val = self.value_from_object(obj)
              if val:
              val.replace(microsecond=0)
              return val.isoformat()
              return ''


              And use it in model:



               created = CustomDateTimeField(auto_now_add=True)





              share|improve this answer




























                1














                You can override DateTimeField's value_to_string method and add the changes there. For example:



                class CustomDateTimeField(models.DateTimeField):
                def value_to_string(self, obj):
                val = self.value_from_object(obj)
                if val:
                val.replace(microsecond=0)
                return val.isoformat()
                return ''


                And use it in model:



                 created = CustomDateTimeField(auto_now_add=True)





                share|improve this answer


























                  1












                  1








                  1







                  You can override DateTimeField's value_to_string method and add the changes there. For example:



                  class CustomDateTimeField(models.DateTimeField):
                  def value_to_string(self, obj):
                  val = self.value_from_object(obj)
                  if val:
                  val.replace(microsecond=0)
                  return val.isoformat()
                  return ''


                  And use it in model:



                   created = CustomDateTimeField(auto_now_add=True)





                  share|improve this answer













                  You can override DateTimeField's value_to_string method and add the changes there. For example:



                  class CustomDateTimeField(models.DateTimeField):
                  def value_to_string(self, obj):
                  val = self.value_from_object(obj)
                  if val:
                  val.replace(microsecond=0)
                  return val.isoformat()
                  return ''


                  And use it in model:



                   created = CustomDateTimeField(auto_now_add=True)






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 21 '18 at 4:11









                  ruddraruddra

                  15.1k32748




                  15.1k32748

























                      0














                      If you want to format it on when displaying it, you can use: creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")



                      You can also make DateTimeField to save it in that format, but this would request a set of changes which will apply system wide:



                      In your settings file set the follwing:




                      1. DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"


                      2. L10N=False to make sore localization data doesn't take precedent when it comes to dates format.

                      3. USE_TZ=False


                      But, consider the fact that this changes will apply by default to all date time objects from your project.






                      share|improve this answer
























                      • Key thing here is that I want to preserve timezone. But your answer contains only date and time

                        – Stan Redoute
                        Nov 20 '18 at 22:33
















                      0














                      If you want to format it on when displaying it, you can use: creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")



                      You can also make DateTimeField to save it in that format, but this would request a set of changes which will apply system wide:



                      In your settings file set the follwing:




                      1. DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"


                      2. L10N=False to make sore localization data doesn't take precedent when it comes to dates format.

                      3. USE_TZ=False


                      But, consider the fact that this changes will apply by default to all date time objects from your project.






                      share|improve this answer
























                      • Key thing here is that I want to preserve timezone. But your answer contains only date and time

                        – Stan Redoute
                        Nov 20 '18 at 22:33














                      0












                      0








                      0







                      If you want to format it on when displaying it, you can use: creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")



                      You can also make DateTimeField to save it in that format, but this would request a set of changes which will apply system wide:



                      In your settings file set the follwing:




                      1. DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"


                      2. L10N=False to make sore localization data doesn't take precedent when it comes to dates format.

                      3. USE_TZ=False


                      But, consider the fact that this changes will apply by default to all date time objects from your project.






                      share|improve this answer













                      If you want to format it on when displaying it, you can use: creation_timestamp.strftime("%Y-%m-%d%H:%M:%S")



                      You can also make DateTimeField to save it in that format, but this would request a set of changes which will apply system wide:



                      In your settings file set the follwing:




                      1. DATETIME_FORMAT="%Y-%m-%d%H:%M:%S"


                      2. L10N=False to make sore localization data doesn't take precedent when it comes to dates format.

                      3. USE_TZ=False


                      But, consider the fact that this changes will apply by default to all date time objects from your project.







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 20 '18 at 22:28









                      AlexAlex

                      48438




                      48438













                      • Key thing here is that I want to preserve timezone. But your answer contains only date and time

                        – Stan Redoute
                        Nov 20 '18 at 22:33



















                      • Key thing here is that I want to preserve timezone. But your answer contains only date and time

                        – Stan Redoute
                        Nov 20 '18 at 22:33

















                      Key thing here is that I want to preserve timezone. But your answer contains only date and time

                      – Stan Redoute
                      Nov 20 '18 at 22:33





                      Key thing here is that I want to preserve timezone. But your answer contains only date and time

                      – Stan Redoute
                      Nov 20 '18 at 22:33











                      0














                      I think you will have to use isoformat. Look at that answer:



                      Show the : character in the timezone offset using datetime.strftime






                      share|improve this answer




























                        0














                        I think you will have to use isoformat. Look at that answer:



                        Show the : character in the timezone offset using datetime.strftime






                        share|improve this answer


























                          0












                          0








                          0







                          I think you will have to use isoformat. Look at that answer:



                          Show the : character in the timezone offset using datetime.strftime






                          share|improve this answer













                          I think you will have to use isoformat. Look at that answer:



                          Show the : character in the timezone offset using datetime.strftime







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 20 '18 at 22:39









                          Tiago GomesTiago Gomes

                          6218




                          6218






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402437%2fformatting-datetimefield-in-django%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              這個網誌中的熱門文章

                              Xamarin.form Move up view when keyboard appear

                              Post-Redirect-Get with Spring WebFlux and Thymeleaf

                              Anylogic : not able to use stopDelay()