Jump to content

How to change first day of the week?


MMXII

Recommended Posts

I wanted to change the first day of the week from sunday to monday. However I found no option to achieve this, so how can I do this?

I noticed that when using 'Unread Content' (Activities) content that has been created before sundays will show up under 'Last week'. Is this a bug? Can it even be configured somewhere?

Link to comment
Share on other sites

This setting actually is enabled, so the week should start on Monday (it does in the Calendar, but only there). However the Activities Stream ('Unread Content') is still incorrect, displaying content from yesterday (a saturday) that is being viewed today ( a sunday) as last week's content (although it should still be this week).

Link to comment
Share on other sites

21 minutes ago, bfarber said:

Can you take a screenshot

Sure. I have added some additional info. I hope it explains what the issue is that I am having here.

When looking at the screenshot, please note that I opened the Unread Content Stream on Sunday, and the content that is listed under "Last Week" is from one day before (Saturday) and from two days before (Friday). So the "cut" between last week and the current week seems to be on sunday there.

last-week-issue.thumb.jpg.fe0c5314d0741a91fae4f853f0a46087.jpg

Link to comment
Share on other sites

However if I don't take a look at the splitting point between saturday and sunday, it actually shows "yesterday", "last hour" and such... So, for example, a post made on wednesday and the unread content tab being looked at on thursday, it then says "yesterday" (for the content that has been posted on wednesday), not "last week". The splitting point seems to be between saturday and sunday.

Link to comment
Share on other sites

No, there is no separation between Saturday and Sunday.
From today starts counting last week. (or past 7 days).
Used "Yesterday", as the first and the closest day to today. And also for the first day of the past 7 days.
Perhaps the term "Last week" is not quite accurate for all of us who use other languages, but you can easily use it for translation - 7 days gone by or if you like another - 6 days before (or after) yesterday.

Link to comment
Share on other sites

I am afraid I do not understand the logic behind that.

  • When I watch a post today (Wednesday) that has been created yesterday (Tuesday), it says "Yesterday".
  • When I watch a post the upcoming Sunday that has been created the day before (Saturday), it will not say "Yesterday", but "Last Week".

I see a difference there. And so do my users, because they wonder how yesterday can be last week in certain circumstances (that is, if today is a sunday).

Link to comment
Share on other sites

The logic is simple.
When discussing a past week, including Monday-Sunday days, as it is at Calendar, it describes the "Previous Week".

When we look at a stream of information lasting one week, and it should be noted that this is information that has passed before today, it is used "Last Week". This determination is independent of the Calendar, but only a number of days equal to 7.

"Yesterday" was the first day of last week.

Link to comment
Share on other sites

But why is it that "Yesterday" only (always!) shows up from Monday till Saturday, but on Sunday there is never a "Yesterday" (only "Last Week")?

I think I get what you are trying to explain here, but if that is the case, is this stream of unread content really displaying information as intended?

Link to comment
Share on other sites

	public function streamSeparator( $createdDate=TRUE )
	{
		$date = $createdDate ? $this->createdDate : $this->lastUpdatedDate;
		
		$now = \IPS\DateTime::ts( time() );
		$yesterday = clone $now;
		$yesterday = $yesterday->sub( new \DateInterval('P1D') );
		$diff = $date->diff( $now );

		if ( $date->format('Y-m-d') == $yesterday->format('Y-m-d') )
		{
			return 'yesterday';
		}
		elseif ( $diff->h < 1 && !$diff->d && !$diff->m )
		{
			return 'past_hour';
		}
		elseif ( $date->format('Y-m-d') == $now->format('Y-m-d') )
		{
			return 'today';
		}
		elseif ( !$diff->y and !$diff->m and $diff->d < 7 )
		{
			return 'last_week';
		}
		else
		{
			return 'earlier';
		}
	}

We generate a datetime object for "now" and one for yesterday (now minus 1 day), and we have a datetime object for the stream result.

If the stream result date is the same as yesterday's date, we show a 'yesterday' separator. If the difference between the result and now is less than an hour, we show 'past hour'. If the date is the same as today we show 'today'. If the difference is less than a week, we show 'last week'. Otherwise we show 'earlier'.

I am unsure why you do not see a 'yesterday' separator if the difference is less than a day. We would need to login and look at that on your site while the issue is occurring, I would expect. The code makes no distinction as to when a week actually starts or ends.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...