{"id":228529,"date":"2022-10-27T19:48:00","date_gmt":"2022-10-27T16:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228529"},"modified":"2022-11-09T02:52:35","modified_gmt":"2022-11-08T23:52:35","slug":"hitta-skillnaden-i-datum-med-php-och-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hitta-skillnaden-i-datum-med-php-och-wordpress\/","title":{"rendered":"Hitta skillnaden i datum med PHP (och WordPress)"},"content":{"rendered":"<p>Att arbeta med datum i PHP \u00e4r en av de saker som du antingen har bra koll p\u00e5, du jobbar p\u00e5 att f\u00f6rst\u00e5 eller s\u00e5 har du fastnat i kaninh\u00e5let i dokumentationen som finns i manualen.<\/p>\n<p>Men om du arbetar med WordPress \u00e4r chansen att du kommer att beh\u00f6va arbeta med datum ganska stor. N\u00e4stan allt som vi publicerar har minst ett datum kopplat till sig.<\/p>\n<p>Detta inkluderar inl\u00e4gg, sidor, anpassade inl\u00e4ggstyper, revisioner, utkast och s\u00e5 vidare.<\/p>\n<p>Dessutom finns det en chans att anpassat arbete som du beh\u00f6ver utveckla med kr\u00e4ver att du hittar skillnaden p\u00e5 tv\u00e5 datum med PHP. Och \u00e4ven om det finns flera s\u00e4tt att g\u00f6ra detta p\u00e5, finns det en process som jag har f\u00f6ljt f\u00f6r n\u00e5got.<\/p>\n<h2>Skillnaden i datum med PHP<\/h2>\n<p>Innan jag g\u00e5r igenom mitt exempel hj\u00e4lper det att ge lite sammanhang. N\u00e4r allt kommer omkring, vad du \u00e4n jobbar med kommer sannolikt att bli lite annorlunda \u00e4n vad jag g\u00f6r.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167514-61e7a4d3a7ab3.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167514-61e7a4d3a7ab3.png\" alt=\"Hitta skillnaden i datum med PHP (och WordPress)\" ><\/a><\/p>\n<p>Den allm\u00e4nna id\u00e9n kan fortfarande vara densamma s\u00e5 k\u00e4rnan i vad du g\u00f6r kan fortfarande extrapoleras fr\u00e5n koden nedan. Men l\u00e5t mig ge ett konkret exempel fr\u00e5n mitt eget arbete:<\/p>\n<ol>\n<li>Jag har en anpassad inl\u00e4ggstyp som representerar en h\u00e4ndelse och h\u00e4ndelsen som ett inl\u00e4ggsdatum.<\/li>\n<li>Jag beh\u00f6ver veta n\u00e4r evenemanget b\u00f6rjar. F\u00f6r att g\u00f6ra detta definierar jag datumformatet med n\/j\/Y-formatet som st\u00f6ds av PHP och konverterar sedan detta till ett datum med PHP:s <a href=\"https:\/\/php.net\/manual\/en\/function.date.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">datumfunktion<\/a>.<\/li>\n<li>D\u00e4refter tar jag dagens datum (som ett enkelt s\u00e4tt att best\u00e4mma skillnaden i datum med PHP f\u00f6r detta exempel) och konverterar det till ett datum med samma funktion och n\/j\/Y-format.<\/li>\n<li>Efter det instansierar jag tv\u00e5 <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime-<\/a> objekt och ber\u00e4knar skillnaden.<\/li>\n<\/ol>\n<p>Om det inte \u00e4r okomplicerat rekommenderar jag att du klickar p\u00e5 l\u00e4nkarna ovan. Annars \u00e4r <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d72e8d0e5d66d5e905f771254c3ad566\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">h\u00e4r koden<\/a>.<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Determines the number of years that exist between the specified\n * event custom post type and today's date.\n *\n * @access private\n * @param  WP_Post $event A custom post type representing an event.\n * @return string  $years The difference in years.\n *\/\nprivate function get_difference_in_dates( $event) {\n\n  \/\/ If the post_date is empty, why are we here?\n  if (empty( $event['post_date']) {\n    return;\n  }\n\n  \/\/ Get the date for the start of the event and te \n  $start = date( 'n\/j\/Y', strtotime( $event['post_date']) );\n  $today = date( 'n\/j\/Y' );\n\n  \/\/ Get the date for the start of the event and today's date.\n  $start      = new DateTime( $start );\n  $end        = new DateTime( $today );\n\n  \/\/ Now find the difference in years.\n  $difference = $start-&gt;diff( $end );\n  $years      = $difference-&gt;y;\n\n  \/\/ If the difference is less than one, we'll return a string of \"&lt; 1\".\n  $years = (1 &gt; $years )? '&lt; 1': (string)$years;\n\n  return $years;\n}<\/code><\/pre>\n<p>Observera i koden ovan att jag bara \u00e4r intresserad av att h\u00e4mta skillnaden i \u00e5r. Du kan v\u00e4lja att v\u00e4lja n\u00e5got annat. Om s\u00e5 \u00e4r fallet g\u00f6r API:et som erbjuds av PHP det enkelt att g\u00f6ra det genom att unders\u00f6ka egenskaperna f\u00f6r <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime-objektet<\/a>.<\/p>\n<p>Men med tanke p\u00e5 tv\u00e5 datum \u00e4r detta ett enkelt s\u00e4tt att hitta skillnaden i datum med PHP i WordPress-sammanhang.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det finns flera s\u00e4tt att hitta skillnaden i datum med PHP. H\u00e4r \u00e4r processen som jag har f\u00f6ljt ett tag.<\/p>\n","protected":false},"author":1,"featured_media":167515,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,901,922,807,724,868],"tags":[1173],"class_list":["post-228529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oevrig","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228529"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228529\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/167515"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}