Я хочу витягнути тексти приміток і дати модифікації з бази даних приміток sqlite, витягнутої з резервної копії пристрою iOS. Але я не можу зрозуміти, як перетворити формат дати в читабельний рядок дати.
Як я отримав дані
Я дізнався, у якому файлі були дані примітки на цій сторінці .
Відповідна частина:
Step 1. Find the Backup File in ~/Library/Application Support/MobileSync/Backup/fea….627
something like : ca3b….39c
If you have trouble seeing Library folder
defaults write com.apple.Finder AppleShowAllFiles Yes
Step 2. Copy file and rename as notes.sqlite
Що я спробував поки що
Я відкрив файл і підтвердив, що в ньому є очікуваний текст примітки. Текст тексту знаходиться всередині таблиці під назвою ZNOTEBODY
. Інша названа таблиця ZNOTE
містить ZBODY
стовпчик aa, який, як видається, містить показники в ZNOTEBODY
таблиці та ZMODIFICATIONDATE
стовпець. Ось суть справи: ZMODIFICATIONDATE
Стовпець має перелічений тип TIMESTAMP
і містить номери з плаваючою комою.
Я переглянув документи sqlite і виявив це:
У SQLite немає класу зберігання, призначеного для зберігання дат та / або разів. Натомість вбудовані функції дати та часу SQLite здатні зберігати дати та часи як значення TEXT, REAL або INTEGER:
- ТЕКСТ як рядки ISO8601 ("РРРР-ММ-DD HH: MM: SS.SSS").
- РЕАЛЬНІ, як номери Джуліана, кількість днів з полудня в Ґрінвічі 24 листопада 4714 р. До н.е. згідно з пролептичним григоріанським календарем.
- INTEGER як Unix Time, кількість секунд з 1970-01-01 00:00:00 UTC.
Програми можуть вибирати дати та час у будь-якому з цих форматів та вільно конвертувати між форматами, використовуючи вбудовані функції дати та часу.
Тож я спробував використати вбудовану datetime
функцію з простою, SELECT datetime(ZMODIFICATIONDATE) FROM ZNOTE;
але такою, що дала значення дурниць, як 1171380-13689427-18 21:08:40
для запису, який я знаю, відповідає 2014-08-12. Збережене значення, про яке йдеться, було 429559087.38102
.
Отже, хтось знає, який формат тут використовується? Або, що ще важливіше, як перетворити його на читабельну дату?
Наступні збережені дати відповідають усім (різні пункти) 2014-08-11, для того, щоб вони були найдавнішими.
429435093.400244
429446655.298724
429447111.140259
429460783.273032
429464301.184442
(Я не був впевнений, де це розмістити, але оскільки здається, що це може бути саме Apple, це здавалося найкращим місцем.)
'localtime'
параметр до цьогоdatetime
дзвінка, наприкладdatetime(foo, 'unixepoch', '31 years', 'localtime')
- особливо складний для користувачів у Великобританії (скажімо), де localtime == UTC протягом півроку, але не другої половини!