#Локалізація
1 нотатка
- ActiveRecord
- AmazonRedshift
- API
- AppleScript
- AWS
- AWSLambda
- Cadencia
- CGO
- Chezmoi
- CI
- Clojure
- Cloudflare
- CloudflarePages
- CloudWatch
- CssParser
- CтохастичнийТаймтрекер
- DNS
- Docker
- Dotfiles
- Fly.io
- GCP
- Git
- GitHub
- GitHubActions
- Go
- Golang
- GTD
- HomeAssistant
- Hugo
- I18next
- JavaScript
- Jira
- JSON
- Kafka
- MacMiniВДорозі
- MacOS
- Markdown
- Mastodon
- Obsidian
- ObsidianCanvas
- OmniWOPE
- OpenSearch
- Oura
- PagerDuty
- Ping
- Plausible
- PostgreSQL
- ReactNative
- Redis
- RSS
- Ruby
- RubyOnRails
- Sentry
- Sintra
- Slack
- SMTP
- SQL
- SQLite
- Svelte
- Swift
- SwiftData
- SwiftUI
- Telegram
- Terraform
- TLS
- TypeScript
- Vercel
- VPN
- WeightPlot
- WordPress
- XCode
- Адвент2024
- Бази Даних
- БДС
- Безпека
- Блокнот
- Вебтехнології
- ВолюІнформації
- Гаджети
- ДизайнМовПрограмування
- Ігри
- Інструменти
- ІнтеграційніТести
- Кава
- КеруваннняЗадачами
- Кодогенерація
- Криптографія
- Локалізація
- Маркетинг
- МетаПост
- МоїПроєкти
- Навігація
- Оптимізація
- ОсновиІнтернетБезпеки
- Помічник ШІ
- ПомічникШІ
- ПостПроПохід
- Програмування
- Продуктивність
- Проєкти
- Проза
- РДУГ
- Рівночасність
- РобочийКомп
- Розробка
- РозумнийБудинок
- СинПопросивПриготувати
- Сон
- СтохастичнийТаймтрекер
- Танці
- ХмарніТехнології
-
SQLite та компоненти дат
Коли збираєшся обчислювати статистику за тижнями, стаєш перед неуникним фактом, що в Америці тижні рахують з неділі, а не з понеділка. Як не крути, а доведеться підтримувати обидва варіанти. Поки що я елегантно про це “забув” та рахував як-небудь. Але прийшов час це виправити.
Все ще й ускладнилось тим, що в SQLite якось дивно розподілені команди форматування: в старих версіях є тільки
%W- номер тижня, що починається з понеділка, та%w- номер дня, що починається з неділі. А в нових додали протилежні ним%Uта%u. Та той SQLite, що є на iOS, ще старий.В GRDB є можливість скомпілювати власну, нову версію SQLite. Але в цього підходу не все гладко із залежностями, тому мені довелося відмовитись.
Натомість просто додав до пінгів стовпчики
weekCode,weekdayта ще парочку. Оскільки дата не змінюється, то залишається один раз їх заповнити — та можна забути про всі ті запити ізstrftime.Що таке
weekCode? Комбінація року та номеру тижня:202451. Тут, до речі, дізнався ще про один нюанс — що звичайного%Yтут недостатньо, бо тиждень202501почався 30 грудня 2024. Тобто потрібний “рік, до якого призначено цей тиждень”, та у Swift навіть так і називається:DateComponents.yearForWeekOfYear.Та, до речі, всі ці обчислення дат я тепер роблю у Swift, а там календар знає всі налаштування користувача — і перший день тижня, і часовий пояс.