};
const shortDateFormatOptions = {
- month: 'numeric',
+ month: 'short',
day: 'numeric',
};
static propTypes = {
intl: PropTypes.object.isRequired,
timestamp: PropTypes.string.isRequired,
+ year: PropTypes.number.isRequired,
};
state = {
now: this.props.intl.now(),
};
+ static defaultProps = {
+ year: (new Date()).getFullYear(),
+ };
+
shouldComponentUpdate (nextProps, nextState) {
// As of right now the locale doesn't change without a new page load,
// but we might as well check in case that ever changes.
}
render () {
- const { timestamp, intl } = this.props;
+ const { timestamp, intl, year } = this.props;
const date = new Date(timestamp);
const delta = this.state.now - date.getTime();
if (delta < 10 * SECOND) {
relativeTime = intl.formatMessage(messages.just_now);
- } else if (delta < 3 * DAY) {
+ } else if (delta < 7 * DAY) {
if (delta < MINUTE) {
relativeTime = intl.formatMessage(messages.seconds, { number: Math.floor(delta / SECOND) });
} else if (delta < HOUR) {
} else {
relativeTime = intl.formatMessage(messages.days, { number: Math.floor(delta / DAY) });
}
- } else {
+ } else if (date.getFullYear() === year) {
relativeTime = intl.formatDate(date, shortDateFormatOptions);
+ } else {
+ relativeTime = intl.formatDate(date, { ...shortDateFormatOptions, year: 'numeric' });
}
return (