×
25.08.2017
217.015.b8f3

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

Вид РИД

Изобретение

№ охранного документа
0002615336
Дата охранного документа
04.04.2017
Аннотация: Изобретение относится к вычислительной технике и может быть использовано для кодирования и преобразования даты в цифровых устройствах. Техническим результатом является увеличение диапазона возможных значений даты. Способ содержит этапы, на которых выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной 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 г.

Источник поступления информации: Роспатент

Showing 1-10 of 56 items.
20.02.2014
№216.012.a37e

Способ параллельной обработки упорядоченных потоков данных

Изобретение относится к вычислительной технике и может быть использовано для параллельной обработки нескольких цифровых потоков данных, каждый из которых представляет последовательность дискретных наборов данных определенного вида. Техническим результатом является повышение производительности...
Тип: Изобретение
Номер охранного документа: 0002507569
Дата охранного документа: 20.02.2014
20.03.2014
№216.012.ad48

Способ обнаружения вредоносного программного обеспечения в ядре операционной системы

Изобретение относится к вычислительной технике и к обеспечению информационной безопасности автоматизированных и информационно-вычислительных систем, в частности к средствам обнаружения вредоносного программного обеспечения (ПО). Техническим результатом является повышение эффективности...
Тип: Изобретение
Номер охранного документа: 0002510075
Дата охранного документа: 20.03.2014
27.05.2014
№216.012.c9bd

Способ управления соединениями в межсетевом экране

Изобретение относится к вычислительной технике. Технический результат заключается в повышении надежности работы установленных соединений и обеспечении максимальной пропускной способности при повышении нагрузки. Такой результат достигается тем, что получают пакеты из внешней сети, формируют...
Тип: Изобретение
Номер охранного документа: 0002517411
Дата охранного документа: 27.05.2014
20.08.2014
№216.012.ec3a

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

Изобретение относится к способу обнаружения и устранения повисших блокировок с использованием блокировочных файлов. Технический результат заключается в повышении надежности обнаружения и устранения повисших блокировок. Ассоциируют разделяемый ресурс с блокировочным файлом. Вызывают системный...
Тип: Изобретение
Номер охранного документа: 0002526282
Дата охранного документа: 20.08.2014
10.10.2014
№216.012.fd31

Способ передачи данных в цифровых сетях передачи данных по протоколу тср/ip через нттр

Изобретение относится к области передачи данных в цифровых сетях передачи данных по протоколу TCP/IP через HTTP. Техническим результатом является повышение скорости передачи данных между клиентом и сервером. Способ передачи данных в цифровых сетях передачи данных по протоколу TCP/IP через HTTP...
Тип: Изобретение
Номер охранного документа: 0002530663
Дата охранного документа: 10.10.2014
10.12.2014
№216.013.0eab

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

Изобретение относится к вычислительной технике. Технический результат заключается в предотвращении повторного приема пакетов в установленном промежутке времени рассогласования. Способ предотвращения повторного использования пакетов цифровых данных в сетевой системе передачи данных, в котором...
Тип: Изобретение
Номер охранного документа: 0002535172
Дата охранного документа: 10.12.2014
10.01.2015
№216.013.1ad0

Способ обнаружения компьютерных атак на сетевую компьютерную систему

Изобретение относится к вычислительной технике. Технический результат заключается в обнаружении компьютерных атак разных видов, комбинированных одновременных атак разных видов и определении видов атак. Способ обнаружения компьютерных атак на сетевую компьютерную систему, включающую, по крайней...
Тип: Изобретение
Номер охранного документа: 0002538292
Дата охранного документа: 10.01.2015
10.03.2015
№216.013.30cd

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

Изобретение относится к способам кодирования и преобразования даты для хранения. Технический результат заключается в снижении необходимого объема памяти для хранения даты. Выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной К бит. Устанавливают для отсчета...
Тип: Изобретение
Номер охранного документа: 0002543961
Дата охранного документа: 10.03.2015
27.09.2015
№216.013.7f86

Способ криптографического преобразования

Изобретение относится к криптографии и средствам защиты информации. Технический результат - увеличение скорости обработки информации и снижение количества операций при реализации итерационного криптографического преобразования. Способ криптографического преобразования сообщения с,...
Тип: Изобретение
Номер охранного документа: 0002564243
Дата охранного документа: 27.09.2015
20.10.2015
№216.013.845d

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

Изобретение относится к способам разрешения конфликта адресации узлов в асинхронных сетях. Технический результат, заключающийся в повышения надежности обнаружения и разрешения конфликта адресации узлов, достигается за счет выполняемых в сетевой системе операций, включающих этапы на которых...
Тип: Изобретение
Номер охранного документа: 0002565488
Дата охранного документа: 20.10.2015
Showing 1-10 of 26 items.
20.02.2014
№216.012.a37e

Способ параллельной обработки упорядоченных потоков данных

Изобретение относится к вычислительной технике и может быть использовано для параллельной обработки нескольких цифровых потоков данных, каждый из которых представляет последовательность дискретных наборов данных определенного вида. Техническим результатом является повышение производительности...
Тип: Изобретение
Номер охранного документа: 0002507569
Дата охранного документа: 20.02.2014
20.03.2014
№216.012.ad48

Способ обнаружения вредоносного программного обеспечения в ядре операционной системы

Изобретение относится к вычислительной технике и к обеспечению информационной безопасности автоматизированных и информационно-вычислительных систем, в частности к средствам обнаружения вредоносного программного обеспечения (ПО). Техническим результатом является повышение эффективности...
Тип: Изобретение
Номер охранного документа: 0002510075
Дата охранного документа: 20.03.2014
27.05.2014
№216.012.c9bd

Способ управления соединениями в межсетевом экране

Изобретение относится к вычислительной технике. Технический результат заключается в повышении надежности работы установленных соединений и обеспечении максимальной пропускной способности при повышении нагрузки. Такой результат достигается тем, что получают пакеты из внешней сети, формируют...
Тип: Изобретение
Номер охранного документа: 0002517411
Дата охранного документа: 27.05.2014
20.08.2014
№216.012.ec3a

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

Изобретение относится к способу обнаружения и устранения повисших блокировок с использованием блокировочных файлов. Технический результат заключается в повышении надежности обнаружения и устранения повисших блокировок. Ассоциируют разделяемый ресурс с блокировочным файлом. Вызывают системный...
Тип: Изобретение
Номер охранного документа: 0002526282
Дата охранного документа: 20.08.2014
10.10.2014
№216.012.fd31

Способ передачи данных в цифровых сетях передачи данных по протоколу тср/ip через нттр

Изобретение относится к области передачи данных в цифровых сетях передачи данных по протоколу TCP/IP через HTTP. Техническим результатом является повышение скорости передачи данных между клиентом и сервером. Способ передачи данных в цифровых сетях передачи данных по протоколу TCP/IP через HTTP...
Тип: Изобретение
Номер охранного документа: 0002530663
Дата охранного документа: 10.10.2014
10.12.2014
№216.013.0eab

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

Изобретение относится к вычислительной технике. Технический результат заключается в предотвращении повторного приема пакетов в установленном промежутке времени рассогласования. Способ предотвращения повторного использования пакетов цифровых данных в сетевой системе передачи данных, в котором...
Тип: Изобретение
Номер охранного документа: 0002535172
Дата охранного документа: 10.12.2014
10.01.2015
№216.013.1ad0

Способ обнаружения компьютерных атак на сетевую компьютерную систему

Изобретение относится к вычислительной технике. Технический результат заключается в обнаружении компьютерных атак разных видов, комбинированных одновременных атак разных видов и определении видов атак. Способ обнаружения компьютерных атак на сетевую компьютерную систему, включающую, по крайней...
Тип: Изобретение
Номер охранного документа: 0002538292
Дата охранного документа: 10.01.2015
10.03.2015
№216.013.30cd

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

Изобретение относится к способам кодирования и преобразования даты для хранения. Технический результат заключается в снижении необходимого объема памяти для хранения даты. Выделяют для хранения данных о дате, включающей год, месяц и день, целое число длиной К бит. Устанавливают для отсчета...
Тип: Изобретение
Номер охранного документа: 0002543961
Дата охранного документа: 10.03.2015
27.09.2015
№216.013.7f86

Способ криптографического преобразования

Изобретение относится к криптографии и средствам защиты информации. Технический результат - увеличение скорости обработки информации и снижение количества операций при реализации итерационного криптографического преобразования. Способ криптографического преобразования сообщения с,...
Тип: Изобретение
Номер охранного документа: 0002564243
Дата охранного документа: 27.09.2015
20.10.2015
№216.013.845d

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

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