g | x | w | all
Bytes Lang Time Link
070Tcl180511T160630Zsergiol
106JavaScript170413T090604ZNeil
107Red180512T080817ZGalen Iv
052Groovy180513T084352ZMatias B
085Befunge98 PyFunge180512T064902ZIQuick 1
130Haskell180512T094942ZAngs
nan170413T051935ZStupid_I
122Pyth180512T040105Zhakr14
080JavaScript180511T234842ZShaggy
037Octave180511T082723ZStewie G
015Japt R180511T163820ZShaggy
037Jelly170414T015936ZJonathan
07905AB1E170606T180144ZMagic Oc
077TSQL170414T160744ZAXMIM
114Microsoft Sql Server170423T050457ZAndrei O
084Mathematica170413T114134ZDavidC
123JavaScript ES6170415T040034Zrhino
089Oracle SQL170415T014409ZDemonbla
048PHP170413T055939Zuser6395
nanTSQL170414T115035ZSalman A
109C#170414T054321ZAXMIM
036k170414T111034ZChromozo
102C#170413T081618Zadrianmp
141TSQL170414T085813Zgrabthef
094Python 3.6170414T075319Z301_Move
056Groovy170413T220852ZKrystian
nanRuby170413T215729ZValue In
114c170413T154132Zjdt
137SQL Oracle170413T193335ZKjetil S
047PowerShell170413T112802ZJoey
094TSQL170413T164944ZWORNG AL
050SAS170413T145717ZJ_Lard
091REXX170413T143453Zidrougge
074SQL PostgreSQL170413T143356ZRichard
126Java 7170413T143220Zcliffroo
099Java 8+170413T135718ZOlivier
142Java 7170413T130056ZKevin Cr
061SpecBAS170413T132041ZBrian
075Ruby170413T124517Zsnail_
113C#170413T094418Zrmrm
067AHK170413T123140ZEngineer
8164VBA170413T120052ZBroke Da
024Pyke170413T111600ZBlue
058R170413T092745Zplannapu
064Perl 5170413T105012ZKjetil S
032k6170413T100124Zzgrep
044Bash + coreutils170413T041226Ztsh
079Python 2170413T050212ZJonathan
081Python 2170413T052621Zxnor
067PHP170413T031055Zsmanna

Tcl, 70 bytes

time {puts [clock f [expr 1482624000+[incr i 604800]] -f %d.%m.%Y]} 53

Try it online!

JavaScript, 111 106 bytes

for(i=14833e8;i<1515e9;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

Note: Stack Exchange's console isn't long enough to display the entire list, so here's the first half as a separate snippet:

for(i=14833e8;i<15e11;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

The custom format costs me 40 bytes...

Red, 107 bytes

f: func[n][n: pad/left/with to-string n 2 #"0"]d: 1-1-2
loop 53[print rejoin[f d/3":"f d/4":"2017]d: d + 7]

Try it online!

Groovy, 52 bytes

53.times{printf('%td.%<tm.2017%n',new Date(0)+it*7)}

Building on Krystian's groovy answer above with an optimisation dropping another four bytes. Uses the fact that the epoch year 1970 matches 2017 weekdays and months.

Befunge-98 (PyFunge), 99 95 93 85 bytes, Leaves trailing newline

All the optimizations were made by @JoKing many thanks to them

s :1g2/10g\%:d1p10g\`+:b`#@_:1\0d1g#;1+:a/'0+,a%'0+,'.,j;a"7102"4k,d1g7+
>8><><>><><>

Try it online!

I felt like we were missing out on some esostericity here so I made a solution in my favourite Esosteric language.

Explanation:
>8><><>><><> Encodes the length of the 12 months
s Store the old day in the blank space
:1g2/ Get an ASCII value from the bottom row and divide it by two this gives us the length of a given month Ex: 8 = 56 in ASCII => 56/2 = 28 => The month (February) has 28 days
10g\% Get the previously saved day and modulo it by the length of the month which allows us to transition the date into the next month
:d1p Save a copy of the new updated day
10g\`+ Test if old date > new date => we transitioned into the next month => add 1 to the month counter
:b` Test if month counter > 11 that means we reached the end of the year (using 0 indexing)
#@_ Based on the previous if terminate the program
:1\0d1g Reorder the stack so it looks like this: Month, 1, Month, 0, Day
# skip the next insctruction (duh)
1+:a/'0+,a%'0+,'., Convert the number to 1 indexing, print, add a . at the end
j; Use the 0 from the stack to not jump and use the ; to go to to the print schedule again then use the 1 to jump over the ; next time
a"7102"4k, Print 2017\n
d1g Get the day value again 7+ Add a week before repeating

Haskell, 133 130 bytes

import Data.Time.Calendar
((\[f,g,h,i,j]->i:j:'.':f:g:".2017\n").drop 5.show)=<<take 53(iterate(addDays 7)$fromGregorian 2017 1 1)

Try it online!

Without a calendar library, 148 144 140 bytes

(\l->last l!l++length l!l++"2017\n").fst.span(>0).(<$>scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]).(-)=<<[1,8..365]
a!_=['0'|a<=9]++show a++"."

This is funny since using an operator for the padding function saves two bytes even though the second argument is unused, because less parentheses are needed – p(last l) is longer than last l!l. Works by calculating day/month pairs by subtracting the cumulative month start dates from the day of the year. The month start dates are compressed as (scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]). Month number is the number of positive elements and day number is the last positive element.

Try it online!

Excel VBA 106 91 79 bytes

Sub p()
For i = #1/1/2017# To #12/31/2017#
If Weekday(i) = 1 Then MsgBox i
Next
End Sub

saved 15 bytes thanks to @Radhato

Assuming 1/1/2017 is Sunday it will save 12 more bytes.

Sub p()
For i = #1/1/2017# To #12/31/2017#
MsgBox i
i = i + 6
Next
End Sub

Thanks @Toothbrush 66 bytes

Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Sub

Edit: (Sub and End Sub is not necessary) 52 bytes

For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next

Pyth, 122 bytes

jm+X2d\.".2017"c+\0`i."0Z|´&ÓäßæÅJÈD@ßÍTû=´}¾}Zàe+ñðºâ$ðGzdüä#Ò×ûíO^©¢Q Óýo`Åi2ÓàÀ{9¢à>«+íø#o^Mý"36 4

Try it online!

The code uses unprintable characters that are not displayed properly on Stack Exchange. Use the link to get the working version.

Pyth doesn't have a way to check whether a date is a Sunday, so this is the Kolmogorov version.
It uses a MAGIC STRING which represents this integer.

Explanation:
jm+X2d\.".2017"c+\0`i."…"36 4 # Code with MAGIC STRING replaced with …
                   `          # String representation of
                      "…"     # THE MAGIC STRING
                     ."       # Decompressed
                    i    36   # To int from base 36
                +\0           # With a 0 in front
               c            4 # Chopped into strings of length 4 as a list
 m                            # With each member
   X2d\.                      #  with . inserted at index 2
  +     ".2017"               #  and appended with .2017
j                             # Joined with newlines

JavaScript, 80 bytes

(f=x=>x?[...f(--x),new Date(2017,0,x*7+1).toLocaleDateString()]:[])(53).join`
`

Octave, 37 bytes

A lot shorter than all other non-golfing languages, and it's even tied with Jelly! Way to go Octave! :)

disp(datestr(367:7:737,'DD.mm.2017'))

Try it online!

Luckily, year 2 AD looks exactly the same as year 2017 AD. Both starts and ends at a Sunday, and neither is a leap year. This saves a lot of bytes, since 367:7:737 is quite a bit shorter than 736696:7:737060.

This converts the number of days since 01.01.0001, to a string on the format DD.mm, with a trailing .2017.

Japt -R, 25 21 15 bytes

Locale dependent - You'll need to set your browser's locale to (among others, I'm sure) Romania (RO), Russia (RU) or Turkey (TR) for the dates to be formatted correctly.

#5ÆÐ#É7TX*7Ä s7

Test it


Explanation

Takes advantage of the fact that if you provide JavaScript's date construct a value for the day that's higher than the number of days in the month you've provided, it will rollover to the next month.

#5                        :53
  Æ                       :Create the range [0,53) and pass each integer X through a function
    #É7                   :  2017
       T                  :  0
        X*7Ä              :  X*7+1
   Ð                      :  new Date() with those 3 arguments as year, month & day
             s7           :  Convert to date string, locale formatted

Jelly,  38  37 bytes

-1 thanks to user202729 (use the quick I implemented about a month after this answer.)

Ḋ€;⁽¥Ñj”.
“£hṅ’ṃ“þœ÷‘R,€"J$;/m7+³DÇ€Y

Jelly currently has no date type or way of representing a date natively, so a purely numeric approach is required.

Try it online!

How?

Ḋ€;⁽¥Ñj”. - Link 1, format helper: list of lists   e.g. [[x,0,2],[x,0,7]] (for 2nd July)
Ḋ€        - dequeue €ach                                [[0,2],[0,7]]
   ⁽¥Ñ    - literal 2017                                2017
  ;       - concatenate                                 [[0,2],[0,7],2017]
       ”. - character '.'
      j   - join                                        [0,2,'.',0,7,'.',2017]
              which has the representation:             "02.07.2017"

“£hṅ’ṃ“þœ÷‘R,€"J$;/m7+³DÇ€Y - Main link: no arguments
“£hṅ’                       - base 250 compressed number 213991
      “þœ÷‘                 - code-page indexes [31,30,28]
     ṃ                      - base decompression: 213991 base length([31,30,28])
                                = [1,0,1,2,1,2,1,1,2,1,2,1]; indexed into [31,30,28]
                                = [31,28,31,30,31,30,31,31,30,31,30,31]
           R                - range (vectorises): [[1,2,...,31],[1,2,...,28],...]
                $           - last two links as a monad:
               J            -     range(length): [1,2,3,4,5,6,7,8,9,10,11,12]
              "             -     zip with:
            ,€              -         pair for €ach: [[[1,1],[2,1],...,[31,1]],[[1,2],[2,2],...,[28,2]],...]
                 ;/         - reduce with concatenation: [[1,1],[2,1],...,[31,1],[1,2],[2,2],...,[28,2],...]
                   m7       - every 7th item: [[1,1],[8,1],...,[24,12],[31,12]]
                      ³     - 100
                     +      - add (vectorises): [[101,101],[108,101],...[124,112],[131,112]]
                       D    - to decimal (vectorises): [[[1,0,1],[1,0,1]],[[1,0,8],[1,0,1]],...,[[1,2,4],[1,1,2]],[[1,3,1],[1,1,2]]]
                        Ç€  - call last link as a monad for €ach: [[0,1,'.',0,1,'.',2017],[0,8,'.',0,1,'.',2017],...,[2,4,'.',1,2,'.',2017],[3,1,'.',1,2,'.',2017]]
                          Y - join with line feeds: [0,1,'.',0,1,'.',2017,'\n',0,8,'.',0,1,'.',2017,'\n',...,'\n',2,4,'.',1,2,'.',2017,'\n',3,1,'.',1,2,'.',2017]
                            - implicit print

05AB1E, 81 79 bytes

•8tåxвÓÈCм∞º²áÝViΣþ1₄ɨÅ9”ÓU2Èn¶äΔb'Î?™Íćεr$Ã]7¤¶¸M•11BR'A¡vy2ôN>".ÿ.2017"«})˜»

Try it online!

No date built-ins.


01081522A05121926A05121926A0209162330A07142128A04111825A0209162330A06132027A03101724A0108152229A05121926A0310172431

Is the compressed base-11 number at the beginning, when split on A's you get:

['01081522', '05121926', '05121926', '0209162330', '07142128', '04111825', '0209162330', '06132027', '03101724', '0108152229', '05121926', '0310172431']

Which is the days of each month that are Sundays, in order. Then, we split each one into pieces of two, and concatenate the index of those days plus 2017 to each.

Finally we just flatten and return the list separated by newlines.

T-SQL, 79 77 Bytes

After helping Salman A improve his answer. I decided to write my own using a loop and PRINT.

I ended with this 90 bytes solution.

DECLARE @d DATETIME=42734 WHILE @d<43100BEGIN PRINT CONVERT(VARCHAR,@d,104)SET @d=@d+7 END

Then I looked at the current leader in T-SQL which was 94 bytes from WORNG ALL with this answer. This guy had found very good tricks.

  1. Name the variable only @
  2. Loop with GOTO instead of actual LOOP
  3. Save one character using FORMAT instead of CONVERT. (SSMS2012+ only)

Using these tricks, this solution was trimmed down to the solution below which is 79 bytes.

DECLARE @ DATETIME=42734G:PRINT FORMAT(@,'dd.MM.yyy')SET @+=7IF @<43100GOTO G

Microsoft Sql Server, 114 bytes

with v as(select 0 n union all select n+7 from v where n<364)select format(dateadd(d,n,'2017'),'dd.MM.yyyy')from v

Check It Online

Mathematica 90 84 bytes

Fairly wordy. numbermaniac and Scott Milner saved 5 and 1 bytes, respectively.

Column[#~DateString~{"Day",".","Month",".","Year"}&/@DayRange["2017","2018",Sunday]]

JavaScript (ES6), 123 bytes

It's my first post here, hello!

a=x=>`0${x}.`.slice(-3);[].map.call('155274263153',(x,i)=>{for(j=0;j<4+(2633>>i&1);j++)console.log(a(+x+j*7)+a(i+1)+2017)})

This solution uses hardcoded data and is designed to work specifically for the year 2017. It relies on no date/time APIs.

As for the digits in the string 155274263153, each digit is a number of its own and denotes the first Sunday of each consecutive month. Output for the entire year can be generated by successively adding 7 to those.

What about the magic number, 2633, used in the loop?
Well... 2633 (decimal) is 101001001001 in binary. Now what could those 1s mean? Starting from the right, the 1st, 4th, 7th, 10th and 12th bit are set. This corresponds to months which happen to have five Sundays, as opposed to those that have only four. Golfed down to this neat expression, it initially looked like this: for(j=0;j<4+ +[0,3,6,9,11].includes(i);j++).

I guess the remaining parts are fairly self-explanatory.

Oracle SQL, 89 bytes

    select to_char(to_date('25-DEC-16')+level*7,'DD.MM.YYYY') from dual connect by level < 54

Explanation: You can just add an integer to a date and it's treated as a number of days. Exploiting connect by we're generating 53 rows for the 53 sundays which occur in 2017. Setting the starting date as the last sunday of 2016 saves me two bytes because I don't have to subtract 7 to compensate level starting at 1.

PHP, 48 bytes

while($t<53)echo gmdate("d.m.2017
",605e3*$t++);

PHP, 46 bytes (for non-negative UTC offsets)

while($t<53)echo date("d.m.2017
",605e3*$t++);

TSQL, 112 105 bytes

SELECT CONVERT(VARCHAR,DATEADD(d,number*7,42734),104)FROM master..spt_values WHERE type='p' AND number<53

Demo

T-SQL Convert Syntax

C#, 110 109 bytes

using System;()=>{for(int i=42729;i<43100;Console.Write(DateTime.FromOADate(i+=7).ToString("dd.MM.yyy\n")));}

You can enjoy this program online here

In this soluion we :

k, 36 Bytes

Same approach as zgrep. 2017.01.01+0 7 14..., string it, split it on ".", reverse each and join back on "." - finally print the list of strings e.g. -1@("Print";"me");

-1@"."/:'|:'"."\:'$2017.01.01+7*!53;

Only showing a few

C#, 138 111 102 bytes

Saved 9 more bytes thanks to Johan du Toit!

Saved 27 bytes thanks to Kevin Cruijssen's suggestions!

()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));}

Anonymous function which prints all Sundays in 2017.

Full program with ungolfed method:

using System;

class P
{
    static void Main()
    {
        Action f =
        ()=>
        {
            for (int i = 0; i < 53; )
                Console.Write(new DateTime(2017, 1, 1).AddDays(7 * i++).ToString("dd.MM.yyyy\n"));
        };

        
        
        f();
    }
}

T-SQL, 141 bytes

SELECT FORMAT(d,'dd.MM.yyyy')FROM(SELECT DATEADD(ww,ROW_NUMBER()OVER(ORDER BY name)-1,'20170101')d FROM sys.stats)a WHERE 2017=DATEPART(yy,d)

Try it here

Python 3.6, 94 bytes

from datetime import*
for x in range(53):print(f"{datetime(1,1,1)+timedelta(x*7):%d.%m.2017}")

I wanted to try using high-level features. Well, it's still readable but not that short…

Groovy, 81 77 63 60 56 bytes

d=new Date(0);53.times{printf('%td.%<tm.2017%n',d);d+=7}

The above can be run as groovy script.

My first code golf entry. Fortunately, the year 1970 was not a leap year, thus can use it as a base.

Thanks to Dennis, here's a: Try it online!

Ruby, 60+7 = 67 bytes

Uses the -rdate flag.

(d=Date.new 1).step(d+365,7){|d|puts d.strftime"%d.%m.2017"}

c, 119 116 114 bytes

y=2017,m=1,d=1,i=53,v;main(){for(;i--;)printf("%02d.%02d.%d\n",d,m,y),v=m^2?m%2^m<8?30:31:28,(d+=7)>v?++m,d-=v:0;}

Try it online

SQL (Oracle), 137 bytes

select substr(d,1,10)
from (select to_char(sysdate-1e4+rownum,'DD.MM.YYYYdy') d from dual connect by rownum<=2e4)
where d like '%2017s%';

PowerShell, 51 47

0..52|%{date((date 2017-1-1)+7.*$_)-u %d.%m.%Y}

Fairly straightforward. 2017-01-01 is a Sunday, so is every following seven days. We can save two bytes if we only need the script to be working in my lifetime:

0..52|%{date((date 17-1-1)+7.*$_)-u %d.%m.%Y}

T-SQL, 94 Bytes

DECLARE @ INT=0,@_ DATETIME='2017'W:SET @+=1SET @_+=7PRINT FORMAT(@_,'dd.MM.yyy')IF @<52GOTO W

if you don't like SQL GOTO or WHILE, here is a 122 bytes CTE solution

WITH C AS(SELECT CAST('2017'AS DATETIME)x UNION ALL SELECT x+7FROM C WHERE X<'12-31-17')SELECT FORMAT(x,'dd.MM.yyy')FROM C

SAS, 52 50 bytes

Saved 2 bytes thanks to @user3490.

data;do i=20820to 21184 by 7;put i ddmmyyp10.;end;

REXX, 91 bytes

do n=1 to 365
  if date(w,n,d)='Sunday' then say left(translate(date(e,n,d),.,'/'),6)2017
  end

SQL (PostgreSQL), 74 Bytes

SELECT to_char(generate_series('170101'::date,'171231','7d'),'DD.MM.YYYY')

If output must be in a single string rather than individual records then the query can be run from psql with the -tA options, making it 76 bytes.

Java 7, 126 bytes

void e(){for(int i=0,j=1,k;i<12;j%=k)for(k="(%('('(('('(".charAt(i++)-9;j<k+1;j+=7)System.out.format("%02d.%02d.2017\n",j,i);}

Computes everything manually. The string "(%('('(('('(" encodes number of days in month. Outer loop goes from 0 to 11 (number of months), inner loops goes until the number representing day is greater than number of days in this month.

See it online

Java 8+, 104 100 99 bytes

()->{for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

Java 5+, 109 105 104 bytes

void f(){for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

Uses the date-capabilities of the printf format.

Test it yourself!

Savings

  1. 104 -> 100: changed the loop values and the multiplicand.
  2. 100 -> 99: golfed the loop

Java 7, 145 144 142 bytes

void c(){for(long x=604800000,i=-x;i<52*x;)System.out.println(new java.text.SimpleDateFormat("dd.MM.2017").format(new java.util.Date(i+=x)));}

-2 bytes thanks to Cliffroot due to a stupid mistake of me..

Try it here.

Explanation:

void c(){                                  // Method
  for(long x=604800000,                    //  Initialize `x` as 604,800,000
           i=-x;                           //  Initialize `i` as `-x` / -604,800,000 as starting number
      i<52*x;)                             //  Loop over all 52 weeks
    System.out.println(new java.text.SimpleDateFormat("dd.MM.2017")
      .format(new java.util.Date(i+=x)));  //   Raise `i` by `x` and then print it in the format `dd.MM.2017`
                                           //  End of loop (implicit / single-line body)
}                                          // End of method

SpecBAS - 61 bytes

1 FOR i=42736 TO 43100 STEP 7: ?DATE$(i,"dd.mm.yyyy"): NEXT i

Dates are a decimal number starting at 30-Dec-1899, so had to work out what 1 Jan 2017 and 31 Dec 2017 were, then just step through those values adding 7 days each time.

Ruby, 75 bytes

Straightforward solution to figure out the dates with Time.

t=Time.new 2017
365.times{puts t.strftime("%d.%m.%Y")if t.sunday?
t+=86400}

C#, 116 114 113 bytes

for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(‌​new DateTime(i).ToString("dd.MM.yyyy\n"));

Can be run in the interactive windows of Visual Studio (or any other C# REPL based on Roslyn)

Down to 113 bytes: thanks to Kevin Cruijssen.

AHK, 67 bytes

d=20170101
Loop,52{
FormatTime,p,%d%,dd.MM.yyyy
Send,%p%`n
d+=7,d
}

Nothing magical happens here. I tried to find a shorter means than FormatTime but I failed.

VBA, 81 bytes (maybe 64)

Sub p()
For i = 0 To 52
MsgBox format(42736 + i * 7, "dd.mm.yyyy")
Next i
End Sub

My first post. Building on newguy's solution by removing the check for weekdays and just specifying every 7th day. Removing the dates saves 12 bytes a piece. 42736 is 1/1/2017. Output date format depends on system setting. Is that allowed? If so, it's 64 bytes because you don't need the format method.

MsgBox #1/1/2017# + i * 7

Pyke, 26 24 bytes

53 Fy17y"RVs6)c"%d.%m.%Y

Try it online!

53 F                     - for i in range(53):, printing a newline between each
    y17y"                -  Create a time object with the year 2017. (Month and days are initialised to 1.)
         RV  )           -  Repeat i times:
           s6            -   Add 1 week
              c"%d.%m.%Y -  Format in "dd.mm.yyyy" time

Or 11 bytes

If allowed to ignore output format

y17y"52VDs6

Try it online!

y17y"       - Create a time object with the year 2017. (Month and days are initialised to 1.)
     52V    - Repeat 52 times:
        D   -  Duplicate the old time
         s6 -  Add 1 week

R, 79 67 58 bytes

cat(format(seq(as.Date("2017/01/01"),,7,53),"\n%d.%m.%Y"))

First of January being a sunday, this snippet creates a sequence of days, every 7 days starting from the 01-01-2017 to the 31-12-2017, format them to the desired format and print them.

Perl 5, 64 bytes

use POSIX;print strftime"%d.%m.%Y\n",0,0,0,7*$_+1,0,117for 0..52

Try it online!

The task given was 2017, not any year, so I hardcoded in:

POSIX is a core module and is always installed with Perl5. Doing the same without using modules in 101 bytes, removing whitespace:

$$_[5]==117&&printf"%02d.%02d.%d\n",$$_[3],$$_[4]+1,$$_[5]+1900
  for map[gmtime(($_*7+3)*86400)],0..1e4

k6, 32 bytes

`0:("."/|"."\)'$2017.01.01+7*!53

Brief explanation:

                2017.01.01+7*!53 /add 0, 7, 14, ..., 364 to January 1st
   ("."/|"."\)'$                 /convert to string, turn Y.m.d into d.m.Y
                                 /   split by ".", reverse, join by "."
`0:                              /output to stdout (or stderr), line by line

Alas, this seems to only work in the closed-source, on-request-only interpreter.

Running the command in the closed-source interpreter.

Bash + coreutils, 44 bytes

seq -f@%f 0 605e3 32e6|date -uf- +%d.%m.2017

may save 2 bytes -u if GMT is assumed


Python 2, 90 79 bytes

-5 bytes with the help of xnor (avoid counting the weeks themselves)
-1 byte thanks to xnor (add back in e for 605000 as 605e3)

from time import*
i=0
exec"print strftime('%d.%m.2017',gmtime(i));i+=605e3;"*53

Try it online!

0 seconds since epoch is 00:00:00 on the 1st of January 1970, which, like 2017 was not a leap year. 605000 seconds is 1 week, 3 minutes, 20 seconds. Adding 52 of these "weeks" does not take us beyond midnight.

Python 2, 81 bytes

x=0
exec"print'%05.2f.2017'%(x%30.99+1.01);x+=7+'0009ANW'.count(chr(x/7+40));"*53

Try it online!

No date libraries, computes the dates directly. The main trick is to treat the dd.mm as a decimal value. For example, 16.04.2017 (April 16) corresponds to the number 16.04. The number is printed formatted as xx.xx with .2017 appended.

The day and month are computed arithmetically. Each week adds 7 days done as x+=7. Taking x modulo 30.99 handles rollover by subtracting 30.99 whenever the day number gets too big. This combines -31 to reset the days with +0.01 to increment the month.

The rollover assumes each month has 31 days. Months with fewer days are adjusted for by nudging x upwards on certain week numbers with +[8,8,8,17,25,38,47].count(x/7). These list is of the week numbers ending these short months, with 8 tripled because February is 3 days short of 31.

This list could is compressed into a string by taking ASCII values plus 40. The shift of +40 could be avoided by using unprintable chars, and could be accessed shorter as a bytes object in Python 3.

PHP, 67 bytes

Using the fact the PHP automatically assign value 1 to undeclared loop variables, and using Linux epoch times,

<?php for(;54>$t+=1;)echo date("d.m.Y\n",604800*($t)+1482624000);?>