Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Local Time makes it easy to display times and dates to users in their local time. Its Rails helpers render <time>
elements in UTC (making them cache friendly), and its JavaScript component immediately converts those elements from UTC to the browser's local time.
Add gem "local_time"
to your Gemfile.
Run bundle install
Run bin/importmap pin local-time
to add the local-time npm package
Add this to app/javascript/application.js
import LocalTime from "local-time"
LocalTime.start()
Add gem "local_time"
to your Gemfile.
Run bundle install
Run yarn add local-time
Add this to app/javascript/packs/application.js
import LocalTime from "local-time"
LocalTime.start()
> comment.created_at
"Wed, 27 Nov 2013 18:43:22 EST -0500"
<%= local_time(comment.created_at) %>
Renders:
<time data-format="%B %e, %Y %l:%M%P"
data-local="time"
datetime="2013-11-27T23:43:22Z">November 27, 2013 11:43pm</time>
And is converted client-side to:
<time data-format="%B %e, %Y %l:%M%P"
data-local="time"
datetime="2013-11-27T23:43:22Z"
title="November 27, 2013 6:43pm EDT"
data-localized="true">November 27, 2013 6:43pm</time>
(Line breaks added for readability)
<%= local_time(time) %>
Format with a strftime string (default format shown here)
<%= local_time(time, '%B %e, %Y %l:%M%P') %>
Alias for local_time
with a month-formatted default
<%= local_date(time, '%B %e, %Y') %>
To set attributes on the time tag, pass a hash as the second argument with a :format
key and your attributes.
<%= local_time(time, format: '%B %e, %Y %l:%M%P', class: 'my-time') %>
To use a strftime format already defined in your app, pass a symbol as the format.
<%= local_time(date, :long) %>
When using the local_time
helper I18n.t("time.formats.#{format}")
, I18n.t("date.formats.#{format}")
, Time::DATE_FORMATS[format]
, and Date::DATE_FORMATS[format]
will be scanned (in that order) for your format.
When using the local_date
helper, I18n.t("date.formats.#{format}")
, I18n.t("time.formats.#{format}")
, Date::DATE_FORMATS[format]
, and Time::DATE_FORMATS[format]
will be scanned (in that order) for your format.
Note: The included strftime JavaScript implementation is not 100% complete. It supports the following directives: %a %A %b %B %c %d %e %H %I %l %m %M %p %P %S %w %y %Y %Z
<%= local_time_ago(time) %>
Displays the relative amount of time passed. With age, the descriptions transition from {quantity of seconds, minutes, or hours} to {date + time} to {date}. The <time>
elements are updated every 60 seconds.
Examples (in quotes):
Preset time and date formats that vary with age. The available types are date
, time-ago
, time-or-date
, and weekday
. Like the local_time
helper, :type
can be passed a string or in an options hash.
<%= local_relative_time(time, 'weekday') %>
<%= local_relative_time(time, type: 'time-or-date') %>
Available :type
options
date
Includes the year unless it's current. "Apr 11" or "Apr 11, 2013"time-ago
See above. local_time_ago
calls local_relative_time
with this :type
option.time-or-date
Displays the time if it occurs today or the date if not. "3:26pm" or "Apr 11"weekday
Displays "Today", "Yesterday", or the weekday (e.g. Wednesday) if the time is within a week of today.weekday-or-date
Displays the weekday if it occurs within a week or the date if not. "Yesterday" or "Apr 11"Internationalization (I18n)
Local Time includes a set of default en
translations which can be updated directly. Or, you can provide an entirely new set in a different locale:
LocalTime.config.i18n["es"] = {
date: {
dayNames: [ … ],
monthNames: [ … ],
…
},
time: {
…
},
datetime: {
…
}
}
LocalTime.config.locale = "es"
24-hour time formatting Local Time supports 24-hour time formats out of the box.
To use this feature, configure the library to favor data-format24
over data-format
attributes:
LocalTime.config.useFormat24 = true
The library will now default to using the data-format24
attribute on <time>
elements for formatting.
But it will still fall back to data-format
if data-format24
is not provided.
The included Rails helpers will automatically look for 24h variants of named formats.
They will search for #{name}_24h
in the same places the regular name is looked up.
This is an example of what your app configuration might look like:
Time::DATE_FORMATS[:simple] = "%-l:%M%P"
Time::DATE_FORMATS[:simple_24h] = "%H:%M"
When :type
is set to time-ago
, the format is obtained from the I18n
configuration.
In practice, you might set config.useFormat24
to true
or false
depending on the current user's configuration, before rendering any <time>
elements.
Please read CONTRIBUTING.md.
FAQs
Local <time> elements
The npm package local-time receives a total of 33,024 weekly downloads. As such, local-time popularity was classified as popular.
We found that local-time demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.