Способ кодирования и вычисления даты с использованием упрощенного формата в цифровых устройствах

Изобретение относится к вычислительной технике и может быть использовано для кодирования и преобразования даты в цифровых устройствах. Техническим результатом является увеличение диапазона возможных значений даты. Способ содержит этапы, на которых выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной K бит; устанавливают для отсчета фиксированную дату как первое января определенного года Y0; вводят значения текущего года Y, месяца М, дня D; вычисляют целое число N для хранения данных о дате по формуле N=D+М*31+(Y-Y0)*372-32; сохраняют число N в двоичном формате; вычисляют при необходимости дату по формулам D=((N mod 372) mod 31)+1, M=((N mod 372) div 31)+1, Y=Y0+(N div 372), где div - операция целочисленного деления (деления с отбрасыванием дробной части); mod - операция взятия остатка от целочисленного деления.

 

Область техники, к которой относится изобретение

Предлагаемое изобретение относится к вычислительной технике и, в частности, к способам кодирования и преобразования даты для хранения и использования в цифровых устройствах: компьютерах, терминалах и пр.

Уровень техники

В современных цифровых устройствах для хранения и использования даты и времени применяются различные внутренние форматы данных. Для преобразования из внутреннего формата во внешний и наоборот требуется проведение ряда вычислений и операций кодирования/декодирования.

Так, известен способ кодирования и преобразования даты в программном обеспечении (ПО) SQL Server 2005 и SQL Server 2012 компании Microsoft [1, 2]. Для хранения даты и времени отводится два 4-байтовых целых числа (всего используется 8 байт). Первые 4 байта используются для хранения собственно даты и содержат количество дней до или после даты отсчета, в качестве которой выбрано 1 января 1900 года (для типа данных datetime; вторые 4 байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи). Используется также хранение даты и времени с меньшей точностью. В этом варианте даты хранятся в виде 2-байтового целого числа, представляющего количество дней, прошедших с 1 января 1900 года (для типа данных smalldatetime; в двух следующих байтах хранится количество минут, прошедших после полуночи).

Таким образом, дата может храниться в виде целого числа и минимально занимать 2 байта (16 бит).

Для прямого преобразования даты по григорианскому календарю в содержимое ячейки памяти может использоваться следующий алгоритм [3]:

a=(М-14) div 12,

y=Y+4800-а,

m=M+12×а-3,

J=D+(153×m+2)div 5+365×y+у div 4-у div 100+у div 400-32075,

где а, у, m - промежуточные переменные целого типа;

M - месяц года, от 1 (январь) до 12 (декабрь);

D - день месяца, от 1 до 31;

Y - год григорианского календаря.

После этого для получения N из полученного значения J (номер юлианского дня для исходной даты) вычитают константу J0, которая зависит от стартовой даты и является номером юлианского дня для стартовой даты. Однако для обратного преобразования целого числа N в дату используется еще большее количество преобразований и вычислений, сначала получают номер юлианского дня J, прибавляя константу J0, далее вычисляют

j=J+32044,

g=j div 146097,

dg=j mod 146097,

с=(dg div 36524+1)×3 div 4,

dc=dg-с×36524,

b=dc div1461,

db=dc mod 1461,

a=(db div 365+1) × 3 div 4,

da=db - a×365,

у=g×400+с×100+b×4+a,

m=(da×5+308) div 153-2,

d=da-(m+4)×153 div 5+122,

Y=y-4800+(m+2) div 12,

M=(m+2) mod 12+1,

D=d+1,

где b, c, d, j, g, da, db, dc, dg - промежуточные переменные целого типа.

Недостатками известного способа являются необходимость проводить ряд сложных вычислений и большой занимаемый объем хранимых данных.

В ряде цифровых устройств возникает необходимость использования только даты, включающей год, месяц и день, что позволяет снизить объем хранимых данных и упростить вычисления.

Для таких устройств может быть использован известный способ кодирования даты [4], заключающийся в том, что

- выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной К бит;

- устанавливают для отсчета фиксированную дату как первое января определенного года Y0;

- вводят значения текущего года Y, месяца М, дня D;

- вычисляют целое число N для хранения данных о дате по формуле

N=D+(М-1)*32+(Y-Y0)*384;

- сохраняют число N в двоичном формате;

- вычисляют при необходимости дату по формулам

D=N mod 32,

M=(N div 32) div 12+1,

Y=Y0+(N div 384),

где div - операция целочисленного деления (деления с отбрасыванием дробной части);

mod - операция взятия остатка от целочисленного деления.

Описанный способ принят за прототип.

Недостатком известного способа является ограничение диапазона хранимых дат. Несмотря на то что способ выигрывает в простоте вычисления и компактности данных, часть возможных значений не используется.

Для сравнения рассмотрим возможный диапазон хранимых дат. В качестве первоначальной даты Y0 возьмем 01.01.1900 (1 января 1900 г. ). Размер даты 2 байта (16 бит).

Если использовать способ компании Microsoft, когда дата вычисляется в днях от первоначальной даты, получаем конечную дату 06.06.2079. Если учитывать только полностью входящие годы, то 31.12.2078. Таким образом, данный способ обеспечивает максимально возможный диапазон в 179 лет.

Если использовать способ, принятый за прототип, то получаем максимальную дату 30.08.2070. Если учитывать только полностью входящие годы, то получаем 31.12.2069. В результате, обеспечивается диапазон в 170 лет. Данный способ содержит меньше вычислений, но приходится жертвовать частью значений, поэтому диапазон становится короче на 9 лет.

Раскрытие изобретения

Техническим результатом является увеличение диапазона возможных значений даты.

Для этого предлагается способ, заключающийся в том, что

- выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной K бит;

- устанавливают для отсчета фиксированную дату как первое января определенного года Y0;

- вводят значения текущего года Y, месяца М, дня D;

- вычисляют целое число N для хранения данных о дате по формуле

N=D+М*31+(Y-Y0)*372-32;

- сохраняют число N в двоичном формате;

- вычисляют при необходимости дату по формулам

D=((N mod 372) mod 31)+1,

M=((N mod 372) div 31)+1,

Y=Y0+(N div 372),

где div - операция целочисленного деления (деления с отбрасыванием дробной части);

mod - операция взятия остатка от целочисленного деления.

В предложенном способе вычисляют целое число N для хранения данных о дате по формуле

N=D-1+(M-1)*31+(Y-Y0)*372.

Значение N представляет собой количество дней от первоначальной даты.

При вычислении N по приведенной формуле в качестве количества дней в любом месяце берется максимально возможное значение 31. Таким образом, каждая дата внутри года будет иметь свой постоянный порядковый номер от 1 (1 января) до 31*12=372 (31 декабря) независимо от того, был ли год високосный или нет. Смещение же между одним и тем же днем текущего и последующего месяца будет равно 31, а между датой текущего года и такой же датой последующего года будет равно 31 * 12=372. Лишние значения дней 30 февраля, 31 февраля или же 29 февраля для года, не являющегося високосным, не используются.

Сокращая запись для N, получаем окончательно

N=D+М*31+(Y-Y0)*372-32.

Количество байт для хранения числа N остается таким же, как в прототипе (2 байта = 16 бит). Соответственно, максимально N содержит 216 = 65536 значений в диапазоне от 0 до 65535.

Если Y0=01.01.1900, то получаем

- при N=0 дату 01.01.1900,

- при N=1 - 02.01.1900,

- при N=31 - 01.02.1900,

- при N=372 - 01.01.1901 и т.д.

Используя данный метод для первоначальной даты Y0=01.01.1900, получаем максимальную дату 02.03.2076. Если брать только полностью входящие годы - 31.12.2075. В результате, обеспечивается диапазон в 176 лет, что на 6 лет больше, чем у известного способа, принятого за прототип, при сравнимой скорости вычислений.

Для рассмотренного варианта, когда за первоначальную дату берется Y0=01.01.1900, максимальная дата по способу от Microsoft получается 06.06.2079 (покрывается диапазон в 65536 дней, обозначим как i), по способу прототипа - 30.08.2070 (62334 дня, обозначим как р), по предложенному способу - 02.03.2076 (64345 дня, обозначим как v). Таким образом, способ прототипа обеспечивает p/i=62334/65536≈95.11%, а предложенный способ v/i=64345/65536≈98,18%, от максимально возможного. При этом, если способ прототипа теряет около 5% значений от максимально возможного, то предложенный способ - только около 2%.

Таким образом, предложенный способ позволяет увеличить диапазон значений даты при сравнимой простоте и скорости вычислений, а также компактности хранения данных.

Осуществление изобретения

Реализация предложенного способа может быть осуществлена в вычислительной системе, способной производить операции целочисленного деления, т.е. практически в любой, включая системы, работающие, например, под управлением операционной системы MS Windows.

Для реализации способа достаточно реализовать выполнение предложенных операций на каком-либо языке программирования.

Например, на языке С# реализация может выглядеть следующим образом:

Реализовать действия предложенного способа в составе программы или функции может специалист в области программирования (программист). Наибольший эффект применение предложенного способа может дать в системах, обрабатывающих данные о датах и имеющих сильные ограничения на объем памяти и аппаратные ресурсы, а также передающие информацию о датах в условиях ограничения на объем передаваемой информации.

Примерами таких систем могут служить системы, хранящие и/или передающие различную информацию, в том числе и даты (например, даты рождения человека, дата отправки груза, дата отправления поезда и т.п.) в виде штрих-кода. В этом случае каждый сэкономленный бит имеет значение.

Эффективно также применение способа в системах и базах данных, в которых имеется большой объем данных с датами, в этом случае может достигаться значительная экономия объема хранения.

Источники информации

1. Дата и время (Transact-SQL), статья по адресу

https://msdn.microsoft.com/ru-ru/library/ms 187819(%D 1%83=sq1.90).aspx

2. Datetime (Transact-SQL), статья по адресу

https://msdn.microsoft.com/ru-ru/library/ms 187819(%D 1%83=sq1. 110).aspx

3. Julian day, статья по адресу

http://en.wikipedia.org/wiki/Julian_day

4. Патент РФ №2543961, приоритет от 16.01.2013 г.

Способ кодирования и вычисления даты с использованием упрощенного формата в цифровых устройствах, заключающийся в том, что

выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной К бит;

устанавливают для отсчета фиксированную дату как первое января определенного года Y0;

вводят значения текущего года Y, месяца М, дня D;

вычисляют целое число N для хранения данных о дате по формуле

N=D+М*31+(Y-Y0)*372-32;

сохраняют число N в двоичном формате;

вычисляют при необходимости дату по формулам

D=((Nmod372)mod 31)+1,

М=((Nmod372)div 31)+1,

Y=Y0+(Ndiv372),

где div - операция целочисленного деления (деления с отбрасыванием дробной части);

mod - операция взятия остатка от целочисленного деления.



 

Похожие патенты:

Изобретение относится к способу и системе для аутентификации запроса транзакции из устройства. Техническим результатом является улучшение защиты транзакции пользователя за счет аутентификационной информации, которая формируется в устройстве, и аутентификационной информации, которая формируется в POS-терминале.

Изобретение относится к области электронной торговли. Технический результат заключается в обеспечении защиты личной информации пользователя.

Изобретение относится к способу, компьютерно-читаемому носителю хранения и системам заказа транспортного средства с использованием устройства связи ближнего действия.

Заявленная группа изобретений относится к электронным коммуникациям, основанным на совместной работе мобильных средств связи. Технический результат заключается в предотвращении несанкционированного доступа третьих лиц к информации.

Изобретение относится к способу и устройству для определения карты и к способу и устройству для выполнения взаимодействия между первым и вторым пользователем. Технический результат заключается в автоматизированном определении подходящей для взаимодействия между устройствами информации.

Изобретение относится к способу и устройству для определения маркера, подлежащего отображению в услуге карты. Технический результат заключается в повышении точности определения наиболее значимой информации, отображаемой с использованием маркера на карте.

Изобретение относится к способу, устройству и машиночитаемому носителю для поиска информации на электронной коммерческой платформе. Технический результат заключается в повышении точности поиска.

Изобретение относится к способу и устройству для управления распорядком дня. Техническим результатом является повышение точности управления распорядком дня.

Изобретение относится к системе, способу и машиночитаемому носителю управления ресурсами. Технический результат заключается в повышении достоверности получаемых данных.

Изобретение относится к системе и способу для управления счетом оплаты абонентских услуг. Техническим результатом является повышение точности тарификации и контроля расходов, а также обеспечение раздельного управления услугами в рамках одного и того же пользовательского счета.

Изобретение относится к области осуществления платежей посредством беспроводных терминалов, а именно к управлению функцией платежа средства ввода. Техническим результатом является обеспечение возможности предотвращения неправомерного использования средства ввода третьим лицом вне предварительно установленного расстояния. Для этого принимают посредством электронного устройства пакет, периодически передаваемый от средства ввода, имеющего функцию платежа, которое отправляет информацию платежа, хранимую в средстве ввода, в средство считывания платежа, когда средство ввода расположено внутри предварительно заданного расстояния от средства считывания платежа, и средство ввода получило разрешение от электронного устройства на совершение платежа и определяют посредством электронного устройства расстояние от электронного устройства до средства ввода на основе интенсивности сигнала принятого пакета. Затем передают посредством электронного устройства средству ввода сигнал подтверждения (ACK) согласно определенному расстоянию электронного устройства от средства ввода, который включает в себя или инструкции, разрешающие функцию платежа средства ввода, если определенное расстояние между средством ввода и электронным устройством находится внутри предварительно определенного диапазона связи, в котором электронное устройство может осуществлять связь со средством ввода, или инструкции, блокирующие функцию платежа средства ввода, если определенное расстояние между средством ввода и электронным устройством находится вне предварительно определенного диапазона, но внутри диапазона связи, и электронное устройство разрешает совершение платежей средством ввода. 2 н. и 13 з.п. ф-лы, 20 ил., 1 табл.

Группа изобретений относится к области выполнения транзакций с помощью систем и средств безналичной оплаты, в частности к средству, выполняющему функцию эмуляции различных средств оплаты. Технический результат заключается в расширении арсенала средств того же назначения. В заявленном средстве биометрической верификации, выполненном в форм-факторе пластиковой карты, содержатся объединенные общей шиной данных микроконтроллер; память; перезаписываемая магнитная лента; сенсорный дисплей; модуль кодирования информации; Bluetooth приемопередатчик; NFC модуль; модуль определения местоположения; модуль спутниковой связи; биометрический сенсор; аккумулятор; средство беспроводной зарядки. 3 н. и 19 з.п. ф-лы. 6 ил.

Группа изобретений относится средствам для передачи и приема информации о продукте, расположенном в камере хранения. Технический результат – обеспечение возможности определения свежести продуктов, расположенных в камере хранения. Для этого предложен способ, который включает в себя: получение информации о контейнере для хранения; сбор информации о продукте, хранящемся в контейнере для хранения в соответствии с информацией о контейнере для хранения, информации о продукте, включающей в себя, по меньшей мере, описательную информацию о продукте, и отправку информации о продукте на мобильный терминал, соответствующий пользователю, при этом осуществляется получение информации о свежести продукта, хранящегося в контейнере для хранения в первый момент времени, при этом первый момент времени - это момент времени, когда продукт помещают в холодильник, или момент, когда свежесть продукта рассчитывается в последний раз, и расчет свежести продукта в соответствии с текущим временем, информацией о состоянии, первым моментом времени и свежестью продукта в первый момент времени. 4 н. и 14 з.п. ф-лы, 11 ил., 1 табл.

Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении скорости передачи данных. Способ содержит этапы, на которых: предоставляют пользователю, посредством отправляющего сервера, поле заголовка Срок Действия в сообщении электронной почты; принимают от пользователя, посредством отправляющего сервера, значение для поля заголовка Срок Действия; подтверждают, посредством отправляющего сервера, что сообщение электронной почты совместимо с протоколом передачи электронной почты и протоколом извлечения электронной почты; и передают электронную почту, посредством отправляющего сервера, принимающему серверу через упомянутую по меньшей мере одну сеть связи согласно протоколу передачи электронной почты, при этом поле заголовка Срок Действия выполнено с возможностью содействия принимающему серверу, в соответствии с протоколом извлечения электронной почты, в автоматическом удалении сообщения электронной почты по истечении периода времени, равного или большего, чем значение поля заголовка Срок Действия. 3 н. и 13 з.п. ф-лы, 4 ил.

Изобретение относится к способу и устройству и мобильному терминалу для размещения заказа. Технический результат заключается в возможности автоматического преобразования формата заказа в формат, поддерживаемый поставщиком. Устройство содержит модуль сканирования, выполненный с возможностью сканирования ранее созданной метки ближней бесконтактной связи (NFC) для получения данных метки, причем данные метки содержат идентификационный код поставщика услуг и информацию о транзакции, модуль генерации заказа, выполненный с возможностью генерации заказа согласно идентификационному коду, информации о транзакции и информации о пользователе, модуль преобразования формата, выполненный с возможностью преобразования формата заказа в формат, поддерживаемый поставщиком услуг, соответствующим идентификационному коду, и модуль отправки, выполненный с возможностью отправки заказа в преобразованном формате поставщику услуг, соответствующему идентификационному коду. 3 н. и 14 з.п. ф-лы, 4 ил.

Изобретение относится к области получения и обработки информации в мобильном терминале. Технический результат заключается в получении и обработке информации в мобильном терминале. Указанный результат достигается применением способа, который содержит этапы: передают сигнал с мобильного терминала по линии связи на коротких расстояниях на внешнее устройство отображения для идентификации по меньшей мере одного элемента, отображаемого на дисплее внешнего устройства отображения; принимают от внешнего устройства отображения, на мобильном терминале, по линии связи на коротких расстояниях информацию об идентифицированном по меньшей мере одном элементе, отображаемом на внешнем устройстве отображения; и выполняют на мобильном терминале функцию для упомянутого по меньшей мере одного элемента, основываясь на принятой информации. 3 н. и 13 з.п. ф-лы, 19 ил.

Изобретение относится к области рекламно-информационных технологий. Техническим результатом является сокращение времени получения информации для пользователя IT-устройства и обеспечение получения информации в автономном режиме. В способе: создают информационно-справочную систему, содержащую коммуникационную подсистему, для получения информации в автономном режиме рекламные материалы размещают в коммуникационной подсистеме, с помощью программного обеспечения IT-устройства извлекают эти материалы, передают, сохраняют и демонстрируют на IT-устройствах в виде информационных блоков в автономном режиме и инициирование прямого голосового или видео соединения с поставщиком рекламных материалов. 7 з.п. ф-лы, 1 ил.

Изобретение относится к способу и системе распознавания пути категории. Технический результат заключается в повышении точности распознавания пути категории. В способе выполняют получение от пользовательского устройства по сети с помощью сервера названия товара, которое пользователь вводит с помощью устройства пользователя, выполнение сервером сегментации слов в названии товара, чтобы получить набор ключевых слов, содержащий ключевые слова, входящие в название товара, и определение сервером пути категории названия товара в соответствии с набором ключевых слов и предварительно конфигурирующейся моделью распознавания категории товара, причем этот этап включает: поиск первой таблицы в модели распознавания категории товара, чтобы получить набор путей категории, содержащий набор ключевых слов, в котором первая таблица содержит соответствия между множеством путей категории и множеством ключевых слов, а также расчетным значением числа вхождений каждого из множества ключевых слов при каждом соответствующем пути категории, расчет интегрального расчетного значения для каждого пути категории из набора путей категории соответственно и выбор пути категории с наибольшим значением интегрального расчетного значения как пути категории названия товара. 2 н. и 6 з.п. ф-лы, 2 табл., 5 ил.

Изобретение относится к области системы календарного планирования. Техническим результатом является обеспечение возможности автоматической синхронизации календарей пользователей в процессе координации встреч. В способе динамического управления календарными событиями после создания приглашения в режиме реального времени собирают данные о доступности и условиях, применимых к временным ячейкам. Условия включают местоположение и уровень важности. Выполняют синхронизацию календарей пользователей, чтобы найти минимум одну комбинацию совпадающих доступных временных ячеек для всех пользователей с учетом имеющихся условий, включая разницу во времени и приблизительное время, необходимое для переезда каждого участника. Совпадающие доступные временные ячейки могут иметь статус «свободен» или могут иметь последовательность статусов «занят»/«в ожидании» с уровнем важности ниже, чем у текущего события. После подтверждения приглашения пользователями для совпадающих временных ячеек в календаре каждого пользователя, подтвердившего означенное приглашение, устанавливается статус занятых. 16 з.п. ф-лы, 11 ил.

Заявленные объекты относятся к вычислительной технике, в частности для психологического моделирования действий лиц. Техническим результатом от использования способа и устройства его реализации является повышение скорости и точности структурирования мультикультурных учебных групп (МКУГ) за счет перевода значений исследуемых культурных параметров в кодированные цифровые электромагнитные сигналы с последующей реализацией последовательности действий в автоматизированном режиме. Способ включает следующие действия: измеряют первичные показатели культуры (Ховстодовы индексы), затем их нормируют относительно максимального значения индекса. Кодируют индексы в электромагнитные сигналы (ЦЭМС). Вычисляют интегральные показатели культуры каждой из стран, на основании которых определяют показатель сходства культур сравниваемых стран. Сравнивают последние с пороговыми значениями и принимают решение о составе МКУГ. 2 н. и 3 з.п. ф-лы, 12 ил.

Изобретение относится к вычислительной технике и может быть использовано для кодирования и преобразования даты в цифровых устройствах. Техническим результатом является увеличение диапазона возможных значений даты. Способ содержит этапы, на которых выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной K бит; устанавливают для отсчета фиксированную дату как первое января определенного года Y0; вводят значения текущего года Y, месяца М, дня D; вычисляют целое число N для хранения данных о дате по формуле ND+М*31+*372-32; сохраняют число N в двоичном формате; вычисляют при необходимости дату по формулам D mod 31)+1, M div 31)+1, YY0+, где div - операция целочисленного деления ; mod - операция взятия остатка от целочисленного деления.

Наверх