Я хочу витягнути тексти приміток і дати модифікації з бази даних приміток 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.400244429446655.298724429447111.140259429460783.273032429464301.184442
(Я не був впевнений, де це розмістити, але оскільки здається, що це може бути саме Apple, це здавалося найкращим місцем.)
'localtime'параметр до цьогоdatetimeдзвінка, наприкладdatetime(foo, 'unixepoch', '31 years', 'localtime')- особливо складний для користувачів у Великобританії (скажімо), де localtime == UTC протягом півроку, але не другої половини!