Platform
Resources
Pricing
Sign in
Get started
Yuri Feldman
Workspace
Fork
Published
By
Yuri Feldman
Edited
Apr 30, 2019
Insert cell
md
`# Time`
Insert cell
md
`## Calendar days`
Insert cell
month
=
d3
.
timeMonth
.
floor
(
time
)
Insert cell
mondayOfMonth
=
d3
.
timeMonday
(
month
)
Insert cell
nextMonth
=
d3
.
timeSecond
.
offset
(
d3
.
timeMonth
.
offset
(
month
,
1
)
,
-
1
)
Insert cell
mondayOnOrAfterNextMonth
=
d3
.
timeSecond
.
offset
(
d3
.
timeMonday
.
ceil
(
nextMonth
)
,
-
1
)
Insert cell
rawCalendarDays
=
d3
.
timeDays
(
mondayOfMonth
,
mondayOnOrAfterNextMonth
)
Insert cell
calendarDays
=
rawCalendarDays
.
map
(
day
=>
{
const
today
=
+
d3
.
timeDay
(
now
)
===
+
day
;
const
inMonth
=
+
d3
.
timeMonth
(
day
)
===
+
month
;
return
{
date
:
day
,
today
,
inMonth
}
;
}
)
Insert cell
md
`### Days by Week`
Insert cell
Insert cell
monthDaysUngrouped
=
monthDaysGroupedByWeek
.
reduce
(
(
acc
,
curr
)
=>
acc
.
concat
(
curr
)
,
[
]
)
Insert cell
table
(
monthDaysUngrouped
,
{
style
:
"compact"
,
paged
:
monthDaysUngrouped
.
length
,
columns
:
{
date
:
{
formatter
(
val
)
{
return
formatDay
(
val
)
;
}
}
}
}
)
Insert cell
formatDay
=
d3
.
timeFormat
(
"%A %B %d"
)
Insert cell
md
`## Hours, minutes, seconds`
Insert cell
now
=
new
Date
(
)
Insert cell
time
=
d3
.
timeMonth
.
offset
(
now
,
1
)
Insert cell
day
=
[
d3
.
timeDay
.
floor
(
time
)
,
new
Date
(
)
]
Insert cell
new
Set
(
d3
.
timeHours
(
day
[
0
]
,
day
[
1
]
)
.
map
(
formatHour
)
)
Insert cell
new
Set
(
d3
.
timeMinutes
(
day
[
0
]
,
day
[
1
]
)
.
map
(
formatMinute
)
)
Insert cell
new
Set
(
d3
.
timeSeconds
(
day
[
0
]
,
day
[
1
]
)
.
map
(
formatSecond
)
)
Insert cell
formatHour
=
d3
.
timeFormat
(
"%H"
)
Insert cell
formatMinute
=
d3
.
timeFormat
(
"%M"
)
Insert cell
formatSecond
=
d3
.
timeFormat
(
"%S"
)
Insert cell
d3
.
timeHours
(
new
Date
(
)
)
Insert cell
md
`## Timespan formatting`
Insert cell
span
=
3000000
Insert cell
seconds
=
Math
.
floor
(
span
-
(
hours
*
60
*
60
)
-
(
minutes
*
60
)
)
Insert cell
minutes
=
Math
.
floor
(
(
span
-
(
hours
*
60
*
60
)
)
/
60
)
Insert cell
hours
=
Math
.
floor
(
span
/
60
/
60
)
Insert cell
result
=
`${
f
(
hours
)
}:${
f
(
minutes
)
}:${
f
(
seconds
)
}`
Insert cell
f
=
d3
.
format
(
"02d"
)
Insert cell
md
`## Imports`
Insert cell
d3
=
require
(
"d3@5"
)
Insert cell
d3_array
=
require
(
"d3-array@2"
)
Insert cell
import
{
table
}
from
"@tmcw/tables@513"
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Fork
View
Export
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
month
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mondayOfMonth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nextMonth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mondayOnOrAfterNextMonth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
rawCalendarDays
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
calendarDays
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
monthDaysGroupedByWeek
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
monthDaysUngrouped
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
formatDay
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
now
Unpin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
time
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
day
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
formatHour
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
formatMinute
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
formatSecond
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
span
Unpin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
seconds
Unpin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
minutes
Unpin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
hours
Unpin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
result
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
f
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
d3
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
d3_array
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
JavaScript
Markdown
HTML
JavaScript
Markdown
HTML
JavaScript
Markdown
HTML
JavaScript
Markdown
HTML
JavaScript
Markdown
HTML