Files
lunasea/lib/core/extensions/datetime.dart
Jagandeep Brar f35c4bf571 [Release] v5.0.0 (50000011) (#343)
* [Radarr] Added very basic localization file for testing

* Added minimal LunaSea localization file

* Translations update from Weblate (#325)

* Added translation using Weblate (German)

* Translated using Weblate (German)

Currently translated at 25.0% (1 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/de/

* Added translation using Weblate (French)

* Translated using Weblate (French)

Currently translated at 25.0% (1 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Deleted translation using Weblate (German)

Co-authored-by: Jagandeep Brar <me@jagandeepbrar.io>
Co-authored-by: Antoine C <contact+weblate@antoinecardon.fr>

* [Localization] Updated keys

* [Strings] Removed internal constant LunaSea to ease localization efforts

* Added translation using Weblate (French)

* Translated using Weblate (French)

Currently translated at 100.0% (1 of 1 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* [Radarr] Added additional localization strings

* [Locale/Radarr] Additional strings

* Added translation using Weblate (Norwegian Bokmål)

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (French)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1 of 1 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 90.9% (10 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Translated using Weblate (French)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* [localizations] sort keys

* [Packages] Migration to Fluttter v2 and NNBD Compatibility (#329)

* Updated packages
* Added system level Firebase Crashlytics to replace Sentry
* Started migration to crashlytics
* [Crashlytics] Adjusted dialog to reflect analytics, add crash button
* [Settings] Removed test crash tile
* [Changelog] Pull changelog version and build from application package
* Added easy_localization package
* Added stub localization handler

* [Localization] Added package and assembly script (#330)

* Updated packages
* Added system level Firebase Crashlytics to replace Sentry
* Started migration to crashlytics
* [Crashlytics] Adjusted dialog to reflect analytics, add crash button
* [Settings] Removed test crash tile
* [Changelog] Pull changelog version and build from application package
* Added easy_localization package
* Added stub localization handler
* [Localization] Added easy_localization package, added script to concat all localization files

* Removed license shield

* [Localization] Integrated system localization handling (#331)

* [Localization] use dash delimiter

* Translated using Weblate (English)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/en/

* [Localization] Added ability to switch languages, updated Radarr localization (#333)

* [Scripts, Localization] Updated prepare script to print nicer JSON, add additional strings for Radarr
* Updated localizations, switch remaining Radarr strings that are available

* Translated using Weblate (French)

Currently translated at 100.0% (12 of 12 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (12 of 12 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Generated new local assets

* [radarr/add_movie] Strings adapted for localizations and added to localization files

* Translated using Weblate (English)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* [Localizations] Rebuild

* Translated using Weblate (French)

Currently translated at 100.0% (18 of 18 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* [Radarr/Add Movie] Adapted for localized strings

* [Radarr/Add Details] Adapted for localized strings

* [Radarr/Edit Movie] Adapted for localized strings

* Translated using Weblate (French)

Currently translated at 100.0% (3 of 3 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (25 of 25 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* [Chore] Rebuilt localizations

* [Radarr/Dialogs] Updated a few dialogs to reflect localized titles

* [Localization] Ability to disable localization options internally

* [DateTime] Show "Just Now" when time difference is under 10 seconds

* [Search] Switch to new XML parsing package/engine

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.7% (30 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Translated using Weblate (French)

Currently translated at 100.0% (31 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* [Localization] (chore) Rebuild localization

* [Chore] Moved localization to system folder

* Added translation using Weblate (Swedish)

* Added translation using Weblate (Swedish)

* Translated using Weblate (Swedish)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (31 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/sv/

* [Localization] Added support for Swedish (sv)

* [Radarr/Types] Adapted all type readable strings for localization

* [Radarr] Continued work on adapting for localization

* Translated using Weblate (French)

Currently translated at 100.0% (71 of 71 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (9 of 9 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* [Localization] (chore) Build localization

* [Chore] Cleanup, move and adapt drawer to LunaUI

* [Drawer] Cleanup drawer builder

* Translated using Weblate (English)

Currently translated at 100.0% (9 of 9 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* Translated using Weblate (English)

Currently translated at 100.0% (10 of 10 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* [UI] Move "luna_ui" to "ui", old "ui" to "deprecated_ui"

* [-arr/Add] Tags set when adding content are now stored in the database

* [-arr/Links] Added Trakt link, normalize sizes, update TMDB logo

* Add weblate link, disable additional languages on release mode, updated changelog

Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Antoine C <contact+weblate@antoinecardon.fr>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Patrik Hauguth <patrik.hauguth@gmail.com>
2021-03-07 20:30:58 -06:00

64 lines
3.1 KiB
Dart

import 'package:intl/intl.dart';
import 'package:lunasea/core.dart';
extension DateTimeExtension on DateTime {
/// Get the floor of a date.
///
/// The floor is a new [DateTime] object with only the year, month, and day copied from the original source.
DateTime get lunaFloor => DateTime(this.year, this.month, this.day);
/// Returns a string representation of the "age" of the [DateTime] object.
///
/// Compares to [DateTime.now().toLocal()] to calculate the age.
String get lunaAge {
if(this == null) return 'Unknown';
Duration diff = DateTime.now().toLocal().difference(this);
if(diff.inSeconds < 10) return 'Just Now';
if(diff.inDays >= 1) return '${diff.inDays} ${diff.inDays == 1 ? 'Day' : 'Days'} Ago';
if(diff.inHours >= 1) return '${diff.inHours} ${diff.inHours == 1 ? 'Hour' : 'Hours'} Ago';
if(diff.inMinutes >= 1) return '${diff.inMinutes} ${diff.inMinutes == 1 ? 'Minute' : 'Minutes'} Ago';
return '${diff.inSeconds} ${diff.inSeconds == 1 ? 'Second' : 'Seconds'} Ago';
}
/// Returns a string representation of the difference in days/months/years.
///
/// Compares to [DateTime.now()] to calculate the difference.
String get lunaDaysDifference {
if(this == null) return null;
Duration diff = this.difference(DateTime.now());
int absoluteDays = diff.inDays.abs();
if(absoluteDays == 0) return 'Today';
// If greater than 2 years, show in years
if(absoluteDays >= 365*2) return '${(absoluteDays/365).round()} Years';
// If greater than 3 months, show in months
if(absoluteDays >= 30*3) return '${(absoluteDays/30).round()} Months';
return '$absoluteDays ${absoluteDays == 1 ? "Day" : "Days"}';
}
/// Returns just the time as a string.
///
/// 3 PM will return either 15:00 (24 hour style) or 3:00 PM depending on the configured database option.
String get lunaTime => LunaDatabaseValue.USE_24_HOUR_TIME.data ? DateFormat.Hm().format(this) : DateFormat.jm().format(this);
/// Returns just the date as a string.
///
/// Formatted as YYYY-MM-DD
String get lunaDate => '${this.year.toString().padLeft(4, '0')}-${this.month.toString().padLeft(2, '0')}-${this.day.toString().padLeft(2, '0')}';
/// Returns the date as a string.
///
/// Formatted as "<month name> <day>, <year>".
String get lunaDateReadable => DateFormat('MMMM dd, y').format(this.toLocal());
/// Returns the date and time as a string.
///
/// Formatted as `<month name> <day>, <year> • <hour>:<minute>:<second>`.
///
/// Set `timeOnNewLine` to true to have the time returned on a new line instead of separated by a bullet.
String lunaDateTimeReadable({ bool timeOnNewLine = false }) => DateFormat(
timeOnNewLine
? LunaDatabaseValue.USE_24_HOUR_TIME.data ? 'MMMM dd, y\nHH:mm:ss' : 'MMMM dd, y\nhh:mm:ss a'
: LunaDatabaseValue.USE_24_HOUR_TIME.data ? 'MMMM dd, y ${LunaUI.TEXT_BULLET} HH:mm:ss' : 'MMMM dd, y ${LunaUI.TEXT_BULLET} hh:mm:ss a'
).format(this.toLocal());
}