Цифровые технологии в жизни человека уже не ограничиваются мобильной связью. В статье выделены 10 ключевых компонентов цифровой жизни человека.
Архив рубрики: Публикации
docker-compose — hashicorp vault
Hashicop Vault будем ставить в docker-compose
ставим docker:
yum remove docker docker-engine docker.io
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager —add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker
ставим docker-compose
https://github.com/docker/compose/releases
на текущий момент самая последняя версия:
2,6,1
выкачиваем её:
curl -L «https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64» -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
всё готово.
теперь приступим к установке Vault
cat docker-compose.yml
version: '3.8'
services:
vault:
build:
context: ./vault
dockerfile: Dockerfile
ports:
- 8200:8200
volumes:
- ./vault/config:/vault/config
- ./vault/policies:/vault/policies
- ./vault/data:/vault/data
- ./vault/logs:/vault/logs
environment:
- VAULT_ADDR=http://127.0.0.1:8200
- VAULT_API_ADDR=http://127.0.0.1:8200
command: server -config=/vault/config/vault-config.json
cap_add:
- IPC_LOCK
depends_on:
- consul
consul:
build:
context: ./consul
dockerfile: Dockerfile
ports:
- 8500:8500
command: agent -server -bind 0.0.0.0 -client 0.0.0.0 -bootstrap-expect 1 -config-file=/consul/config/config.json
volumes:
- ./consul/config/consul-config.json:/consul/config/config.json
- ./consul/data:/consul/data
consul-worker:
build:
context: ./consul
dockerfile: Dockerfile
command: agent -server -join consul -config-file=/consul/config/config.json
volumes:
- ./consul/config/consul-config.json:/consul/config/config.json
depends_on:
- consul
cat consul/Dockerfile
# base image
FROM alpine:3.14
# set consul version
ENV CONSUL_VERSION 1.10.2
# create a new directory
RUN mkdir /consul
# download dependencies
RUN apk --no-cache add
bash
ca-certificates
wget
# download and set up consul
RUN wget --quiet --output-document=/tmp/consul.zip https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip &&
unzip /tmp/consul.zip -d /consul &&
rm -f /tmp/consul.zip &&
chmod +x /consul/consul
# update PATH
ENV PATH="PATH=$PATH:$PWD/consul"
# add the config file
COPY ./config/consul-config.json /consul/config/config.json
# expose ports
EXPOSE 8300 8400 8500 8600
# run consul
ENTRYPOINT ["consul"]
cat consul/config/consul-config.json
{
"datacenter": "localhost",
"data_dir": "/consul/data",
"log_level": "DEBUG",
"server": true,
"ui": true,
"ports": {
"dns": 53
}
}
mkdir consul/data/
cat vault/Dockerfile
# base image
FROM alpine:3.14
# set vault version
ENV VAULT_VERSION 1.11.2
# create a new directory
RUN mkdir /vault
# download dependencies
RUN apk --no-cache add
bash
ca-certificates
wget
# download and set up vault
RUN wget --quiet --output-document=/tmp/vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip &&
unzip /tmp/vault.zip -d /vault &&
rm -f /tmp/vault.zip &&
chmod +x /vault
# update PATH
ENV PATH="PATH=$PATH:$PWD/vault"
# add the config file
COPY ./config/vault-config.json /vault/config/vault-config.json
# expose port 8200
EXPOSE 8200
# run vault
ENTRYPOINT ["vault"]
cat vault/config/vault-config.json
{
"backend": {
"consul": {
"address": "consul:8500",
"path": "vault/"
}
},
"listener": {
"tcp":{
"address": "0.0.0.0:8200",
"tls_disable": 1
}
},
"ui": true
}
mkdir vault/data/
mkdir vault/logs/
cat vault/policies/app-policy.json
{
"path": {
"kv/data/app/*": {
"policy": "read"
}
}
}
запускаем:
docker-compose up -d
ждём пока соберётся.
потом заходим в Vault:
http://192.168.1.170:8200

ставим
Key shares = 5
Key threshold = 3
но вы можете установить любое другое значение
мы получаем 5 ключей.

внизу справа можно скачать json
{
"keys": [
"22b07e26d89c620dc68cab7a7e5046d8a807390fe55a477d091f9178bc8339af3c",
"140b672e0b9fdfae320d80a023261be6a72c019fd85f19f58a29eb1fccd82f26f2",
"6cec6d35d5f2250e4e007f1a8d88f252f725751d3383d1d0dff8aabc0e1738e16b",
"17752ae8096c64efe213bc63eccb496a87c8525ad24c0597ecab386adbfc8c86b5",
"e23fc4247807c314d1590dcb706e131218ae7fdf8b6d6959d208d9398c5ec2168e"
],
"keys_base64": [
"IrB+JticYg3GjKt6flBG2KgHOQ/lWkd9CR+ReLyDOa88",
"FAtnLguf364yDYCgIyYb5qcsAZ/YXxn1iinrH8zYLyby",
"bOxtNdXyJQ5OAH8ajYjyUvcldR0zg9HQ3/iqvA4XOOFr",
"F3Uq6AlsZO/iE7xj7MtJaofIUlrSTAWX7Ks4atv8jIa1",
"4j/EJHgHwxTRWQ3LcG4TEhiuf9+LbWlZ0gjZOYxewhaO"
],
"root_token": "s.Rw5WixMGCf84xZD1nHhndj3K"
}
далее нужно ввести ключи по очереди:


далее выбираем рутовый токен который мы скачали вместе с ключами:

мы так же можем выбрать и другие методы:

но мы остановимся на токене
всё ок.
попадаем в панель:

проверим Consul
http://192.168.1.170:8500/

==========================================
добавим аутентификацию по логину и паролю:






ну всё готово. пользователь есть теперь зададим политику.

идём на офф сайт
https://www.vaultproject.io/docs/concepts/policies
или смотрим в default возможные варианты настройки
вставляем политику:
path "secret/*" {
capabilities = ["create", "read", "update", "patch", "delete", "list"]
}

всё можно создавать секрет






Источник: https://sidmid.ru/docker-compose-hashicorp-vault/
Непрерывное развертывание с помощью GitLab и Kubernetes
Если у вас есть веб-приложение с соответствующим файлом Dockerfile, теперь вы можете перейти к следующему шагу и использовать GitLab для автоматического развертывания вашего приложения в кластере kubernetes. Вот как…
Для этого поста в блоге вам понадобится:
- ваш исходный код и файл Dockerfile размещены в проекте GitLab
- бегун GitLab с исполнителем docker-in-docker
- доступ к кластеру kubernetes
Процесс на самом деле состоит из 2 этапов:
- создайте образ Docker и перейдите во встроенный реестр Docker в GitLab
- используйте kubectl apply для развертывания новой версии

1. Сборка
Если ваш Dockerfile готов, создание образа — это просто вопрос запуска docker build ...и docker push .... Однако есть еще несколько хитростей:
- мы будем использовать push для встроенного реестра Docker в GitLab;
- мы будем использовать предопределенные переменные среды GitLab, чтобы получить соответствующий логин, пароль, имя изображения и т.д.;
- нам нужен docker-in-docker runner, имидж и сервис.
Итак, ваш .gitlab-ci.yml должен выглядеть так:
stages:
- test
- build
- deploy
build:
stage: build
# this job requires docker-in-docker
tags:
- dind
image: docker:19.03.12
services:
- docker:19.03.12-dind
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA --tag $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
После завершения этапа сборки ваше изображение должно появиться в реестре контейнеров GitLab:

2. Развертывание
Чтобы выполнить развертывание, мы должны добавить задание развертывания, которое
- создает соответствующий файл deploy.yml
- запускает развертывание:
kubectl apply -f deploy.yml
Но сначала мы должны обеспечить, чтобы:
- бегун GitLab может получить доступ к кластеру kubernetes
- кластеру kubernetes разрешено извлекать изображение из нашего частного реестра GitLab
a. Доступ GitLab к kubernetes
Чтобы предоставить GitLab доступ к вашему кластеру kubernetes, используйте kubectl для создания учетной записи службы (SA):
kubectl create sa gitlab
В настоящее время этой учетной записи разрешен вход в систему, но у нее нет абсолютно никаких других прав. Это довольно бесполезно! Итак, мы должны определить роль, например, в файле с именем role-deployer.yaml:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: deployer
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["services", "deployments", "replicasets", "pods", "configmap"]
verbs: ["*"]
В этом примере роль называется deployer и определяется в пространстве имен по умолчанию. Очевидно, что вы должны адаптироваться к своим настройкам.
To apply this configuration:
kubectl apply -f role-deployer.yaml
Now we have to bind this role to our gitlab account, using another file called rolebinding-gitlab-deployer.yaml:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gitlab-deployer
namespace: default
subjects:
- kind: User
name: system:serviceaccount:default:gitlab
apiGroup: ""
roleRef:
kind: Role
name: deployer
apiGroup: ""
And once again we apply the configuration:
kubectl apply -f rolebinding-gitlab-deployer.yaml

Now we have to extract the token that kubernetes created for the gitlab account:
kubectl get sa gitlab -o yaml
kubectl get secret gitlab-token-??? -o yaml | grep token:

Наконец, в GitLab мы определяем 2 переменные вSettings > CI / CD / Variables:
K8S_TOKENс помощью токена, который мы только что извлеклиK8S_SERVERс адресом сервера API kubernetes (https://kube.example.com:6443)

б. Доступ Kubernetes к GitLab
Чтобы разрешить доступ из Kubernetes к реестру GitLab, перейдите Personal menu > Settings > Access Tokensи создайте токен личного доступа с областью apiдействия .

Then, back on kubernetes, use kubectl to create a PullSecret called gitlab-token:
kubectl create secret docker-registry gitlab-token
--docker-server=<gitlab.server:port>
--docker-username=<gitlab-token-name>
--docker-password=<gitlab-token>
c. deploy job
We can add the deploy job to .gitlab-ci.yml:
deploy:
stage: deploy
image: cylab/kubectl
before_script:
# create the configuration (context) for our kubernetes cluster
- kubectl config set-cluster deploy-cluster --server="$K8S_SERVER" --insecure-skip-tls-verify
- kubectl config set-credentials gitlab --token=$(echo $K8S_TOKEN | base64 -d)
- kubectl config set-context deploy-cluster --cluster=deploy-cluster --namespace=default --user=gitlab
- kubectl config use-context deploy-cluster
script:
- envsubst < deploy.tmpl > deploy.yaml
- kubectl apply -f deploy.yaml
Как вы можете видеть:
before_scriptраздел использует переменные$K8S_SERVERи$K8S_TOKENдля создания соответствующего контекста kubectlscriptраздел используетenvsubstкоманду иdeploy.tmplшаблон для создания соответствующегоdeploy.yaml
Вот пример deploy.tmpl, который вы, очевидно, должны настроить для своего приложения. Он содержит один контейнер и 4 реплики, он использует gitlab-token PullSecret и имеет службу NodePort для предоставления приложения:
apiVersion: v1
kind: Service
metadata:
name: hello-svc
spec:
type: NodePort
ports:
- port: 80
nodePort: 30001
protocol: TCP
selector:
app: hello-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 4
selector:
matchLabels:
app: hello-app
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-pod
image: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
ports:
- containerPort: 80
imagePullSecrets:
- name: gitlab-token
Наконец-то
Если все пойдет хорошо, при следующем нажатии на ваш репозиторий GitLab:
- будет создан новый образ Docker;
- развертывание kubernetes будет обновлено для использования в новом образе Docker;
- kubernetes создаст и обновит необходимые наборы реплик;

- будет извлечен новый образ Docker;
- новая версия вашего приложения появится в Сети!
Источник: https://cylab.be/blog/112/continuous-deployment-with-gitlab-and-kubernetes
Знакомство с LibreOffice Tutorial 08: Введение в LO Base

Знакомство с LibreOffice Tutorial 08: Введение в LO Base
Продолжаем серию статей о Знакомство с LibreOffice, сегодня мы проведем этот восьмой и последний год, сосредоточив внимание на приложении, известном как «База LibreOffice». Для этого закройте этот первый цикл постов, посвященных подробному знанию, немного больше о каждом компоненте Офисный пакет LibreOffice.
Кроме того, как многие уже знают, База LibreOffice приложение, созданное для Менеджер базы данных (администратор) Того же самого. И поэтому идеал для создавать, проектировать и управлять различными типами баз данных, стиль Доступ MS Office. Итак, далее мы увидим, что предлагает эта версия с точки зрения графического интерфейса и технических характеристик.
Форматы дат в программировании
Форматы дат являются одной из наиболее часто используемых функций при написании кода на любом языке программирования. Дата и время не одинаковы во всех регионах мира; например, если у вас вторник, страны на другом конце света будут в понедельник или среду. Из-за огромных различий в часовых поясах программисты включают функции даты в свои программы для представления данных в локальном часовом поясе компьютера.
Формат даты, в котором данные записываются на компьютер, с другой стороны, обычно неорганизован и сложен для понимания, поэтому существуют форматы дат.
Что такое форматы дат?
С технической точки зрения формат даты — это формат, в котором дата, месяц и год даты представлены в определенном формате, таком как ‘dd/mm/yy’ или ‘yy/dd/mm’. Разные системы и языки программирования имеют разные форматы.
Каждый язык программирования имеет свой набор функций для отображения дат в определенном формате.
Давайте рассмотрим различные функции форматирования даты, доступные на различных языках программирования.
Формат даты PHP
Функция date() в PHP представляет дату в определенном формате. Синтаксис форматирование даты php выглядит следующим образом:
Синтаксис
date(format, timestamp)
Здесь,
- Формат относится к указанному формату, в котором будет представлена дата.
- Временная метка — это необязательный параметр, в котором вы можете указать временную метку, в которой должны быть представлены время и дата. Если функция не используется, она вернет текущую дату.
Теперь давайте рассмотрим параметры форматирования, которые можно добавить в функцию для отображения дат в различных форматах,
- d относится к дате месяца, которая будет представлена двумя цифрами (01 или 31).
- D относится к дню недели, который будет представлен в сокращенных текстах (Mon по Sun).
- m относится к месяцу, который будет представлен цифрами (01 или 12).
- M относится к месяцу, который будет представлен в сокращенных текстах (January по December).
- y относится к году, который будет представлен двумя последними цифрами (20 или 21)
- Y относится к году, который будет представлен четырьмя цифрами (2020 или 2021)
Пример:
<?php
echo "Текущая дата в разных форматах:" . "n";
echo date("d/m/Y") . "n";
echo date("d-m-Y") . "n";
echo date("d.m.Y") . "n";
echo date("d.M.Y/D");
?>
Вывод:
Текущая дата в разных форматах:
21/06/2022
21-06-2022
21.06.2022
21.Jun.2022/Tue
Формат даты Javascript
В Javascript функция new date() представляет дату. Синтаксис выглядит следующим образом,
Синтаксис:
new Date(); new Date(value); new Date(dateString);
Здесь,
- Значение относится к количеству миллисекунд, прошедших с 1 января 1970 года, 00:00:00 UTC.
- Строка даты указывает на формат даты, в котором вы хотите представить дату.
Дата в Javascript может быть отформатирована с помощью следующих способов,
- Дата ICO
“2022-06-22” (международный стандарт)
- Короткая дата
“06/22/2022”
- Длинная дата
“Jun 22 2022” or “22 Jun 2022”
Пример:
<script>
var A = new Date('June 22, 2022');
document.write(A);
</script>
Вывод:
Wed Jun 22, 2022, 00:00:00 GMT+0200 (Central European Summer Time)
Формат даты SQL
В SQL функция FORMAT возвращает текущие данные в разных заданных форматах. Синтаксис выглядит следующим образом,
Синтаксис:
FORMAT (value,format[,culture]) GO
Здесь,
- В разделе значение используется функция getdate() для получения даты из столбца date.
- В разделе формат указаны параметры того, как должна быть представлена дата.
- Культура используется для представления даты в местной культурной среде.
Вот список параметров, используемых для представления данных в определенной настройке,
- dd, относится к дню месяца, представленному в числовых значениях. (01-31)
- dddd, относится к текущему дню, представленному в тексте. (Monday – Wednesday)
- ММ, относится к месяцу, представленному в цифрах. (01-12)
- МММ, относится к названию месяца, представленному в аббревиатуре. (Jan – Dec)
- ММММ, относится к названию месяца, представленному в тексте. (January – December)
- yy, относится к году, представленному двумя последними цифрами. (21 или 22)
- гггг, относится к году, представленному четырьмя цифрами. (2021 или 2022)
Пример:
SELECT FORMAT (getdate(), 'dd-MM-yy') as date GO
Вывод:
22-06-22
Формат даты Java
В Java в классе LocalDate метод now() отображает текущую дату.
Для форматирования даты импортируется класс DateTimeFormatter, а метод ofPattern() отображает дату в определенном формате.
Пример:
public class Time {
public static void main(String[] args) {
LocalDateTime currentDate = LocalDateTime.now();
System.out.println("Формат даты перед форматированием: " + currentDate);
DateTimeFormatter newDateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy");
String dateFormatted = currentDate.format(newDateFormat);
System.out.println("Формат даты после форматирования: " + dateFormatted);
}
Вывод:
Формат даты перед форматированием: 2022-06-21T14:41:01.242164
Формат даты после форматирования: 21-06-2022
Вот список параметров, используемых для представления данных в определенной настройке,
- G, относится к эпохе. (AD)
- y, относится к году, представленному четырьмя цифрами. (2022)
- M, относится к текущему месяцу. (June или 06)
- d, относится к текущей дате. (01-31)
- E, относится к дню в неделю. (Tuesday)
Формат даты на Python
Метод strftime() используется в Python для форматирования даты. Синтаксис выглядит следующим образом,
Синтаксис:
time.strftime(format)
Здесь,
Формат относится к формату, в котором будет представлена дата.
Вот краткое изложение параметров, которые будут использоваться для представления данных в определенном формате,
- %Y, относится к году, представленному четырьмя цифрами. (2021)
- %y, относится к году, представленному двумя последними цифрами. (21)
- %m относится к месяцу, представленному двумя цифрами. (01-12)
- %B, относится к месяцу, представленному в тексте. (January по December)
- %b относится к месяцу, представленному в сокращенной форме. (Jan по Dec)
- %A относится к дням недели, представленным в тексте. (Monday по Sunday)
- %a относится к дням недели, представленным в краткой форме. (Mon по Sun)
- %w относится к дням недели, представленным в цифрах. (0-6)
- %d, относится к дате, представленной в цифрах.(01-31)
Пример:
from datetime import datetime
time = datetime.now()
print("Без форматирования: ", time)
print("После форматирования: ", time.strftime("%b %d, %Y"))
Вывод:
Без форматирования: 2022-06-21 14:57:29.616289
После форматирования: Jun 21, 2022
Заключение
Используя функцию форматирования даты, программисты могут легко изменить то, как они хотят, чтобы дата была представлена в их проектах. С упомянутыми форматами дат попробуйте изменить форматы даты в своих программах.
Форматы дат в программировании
Форматы дат являются одной из наиболее часто используемых функций при написании кода на любом языке программирования. Дата и время не одинаковы во всех регионах мира; например, если у вас вторник, страны на другом конце света будут в понедельник или среду. Из-за огромных различий в часовых поясах программисты включают функции даты в свои программы для представления данных в локальном часовом поясе компьютера.
Формат даты, в котором данные записываются на компьютер, с другой стороны, обычно неорганизован и сложен для понимания, поэтому существуют форматы дат.
Что такое форматы дат?
С технической точки зрения формат даты — это формат, в котором дата, месяц и год даты представлены в определенном формате, таком как ‘dd/mm/yy’ или ‘yy/dd/mm’. Разные системы и языки программирования имеют разные форматы.
Каждый язык программирования имеет свой набор функций для отображения дат в определенном формате.
Давайте рассмотрим различные функции форматирования даты, доступные на различных языках программирования.
Формат даты PHP
Функция date() в PHP представляет дату в определенном формате. Синтаксис форматирование даты php выглядит следующим образом:
Синтаксис
date(format, timestamp)
Здесь,
- Формат относится к указанному формату, в котором будет представлена дата.
- Временная метка — это необязательный параметр, в котором вы можете указать временную метку, в которой должны быть представлены время и дата. Если функция не используется, она вернет текущую дату.
Теперь давайте рассмотрим параметры форматирования, которые можно добавить в функцию для отображения дат в различных форматах,
- d относится к дате месяца, которая будет представлена двумя цифрами (01 или 31).
- D относится к дню недели, который будет представлен в сокращенных текстах (Mon по Sun).
- m относится к месяцу, который будет представлен цифрами (01 или 12).
- M относится к месяцу, который будет представлен в сокращенных текстах (January по December).
- y относится к году, который будет представлен двумя последними цифрами (20 или 21)
- Y относится к году, который будет представлен четырьмя цифрами (2020 или 2021)
Пример:
<?php
echo "Текущая дата в разных форматах:" . "n";
echo date("d/m/Y") . "n";
echo date("d-m-Y") . "n";
echo date("d.m.Y") . "n";
echo date("d.M.Y/D");
?>
Вывод:
Текущая дата в разных форматах:
21/06/2022
21-06-2022
21.06.2022
21.Jun.2022/Tue
Формат даты Javascript
В Javascript функция new date() представляет дату. Синтаксис выглядит следующим образом,
Синтаксис:
new Date(); new Date(value); new Date(dateString);
Здесь,
- Значение относится к количеству миллисекунд, прошедших с 1 января 1970 года, 00:00:00 UTC.
- Строка даты указывает на формат даты, в котором вы хотите представить дату.
Дата в Javascript может быть отформатирована с помощью следующих способов,
- Дата ICO
“2022-06-22” (международный стандарт)
- Короткая дата
“06/22/2022”
- Длинная дата
“Jun 22 2022” or “22 Jun 2022”
Пример:
<script>
var A = new Date('June 22, 2022');
document.write(A);
</script>
Вывод:
Wed Jun 22, 2022, 00:00:00 GMT+0200 (Central European Summer Time)
Формат даты SQL
В SQL функция FORMAT возвращает текущие данные в разных заданных форматах. Синтаксис выглядит следующим образом,
Синтаксис:
FORMAT (value,format[,culture]) GO
Здесь,
- В разделе значение используется функция getdate() для получения даты из столбца date.
- В разделе формат указаны параметры того, как должна быть представлена дата.
- Культура используется для представления даты в местной культурной среде.
Вот список параметров, используемых для представления данных в определенной настройке,
- dd, относится к дню месяца, представленному в числовых значениях. (01-31)
- dddd, относится к текущему дню, представленному в тексте. (Monday – Wednesday)
- ММ, относится к месяцу, представленному в цифрах. (01-12)
- МММ, относится к названию месяца, представленному в аббревиатуре. (Jan – Dec)
- ММММ, относится к названию месяца, представленному в тексте. (January – December)
- yy, относится к году, представленному двумя последними цифрами. (21 или 22)
- гггг, относится к году, представленному четырьмя цифрами. (2021 или 2022)
Пример:
SELECT FORMAT (getdate(), 'dd-MM-yy') as date GO
Вывод:
22-06-22
Формат даты Java
В Java в классе LocalDate метод now() отображает текущую дату.
Для форматирования даты импортируется класс DateTimeFormatter, а метод ofPattern() отображает дату в определенном формате.
Пример:
public class Time {
public static void main(String[] args) {
LocalDateTime currentDate = LocalDateTime.now();
System.out.println("Формат даты перед форматированием: " + currentDate);
DateTimeFormatter newDateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy");
String dateFormatted = currentDate.format(newDateFormat);
System.out.println("Формат даты после форматирования: " + dateFormatted);
}
Вывод:
Формат даты перед форматированием: 2022-06-21T14:41:01.242164
Формат даты после форматирования: 21-06-2022
Вот список параметров, используемых для представления данных в определенной настройке,
- G, относится к эпохе. (AD)
- y, относится к году, представленному четырьмя цифрами. (2022)
- M, относится к текущему месяцу. (June или 06)
- d, относится к текущей дате. (01-31)
- E, относится к дню в неделю. (Tuesday)
Формат даты на Python
Метод strftime() используется в Python для форматирования даты. Синтаксис выглядит следующим образом,
Синтаксис:
time.strftime(format)
Здесь,
Формат относится к формату, в котором будет представлена дата.
Вот краткое изложение параметров, которые будут использоваться для представления данных в определенном формате,
- %Y, относится к году, представленному четырьмя цифрами. (2021)
- %y, относится к году, представленному двумя последними цифрами. (21)
- %m относится к месяцу, представленному двумя цифрами. (01-12)
- %B, относится к месяцу, представленному в тексте. (January по December)
- %b относится к месяцу, представленному в сокращенной форме. (Jan по Dec)
- %A относится к дням недели, представленным в тексте. (Monday по Sunday)
- %a относится к дням недели, представленным в краткой форме. (Mon по Sun)
- %w относится к дням недели, представленным в цифрах. (0-6)
- %d, относится к дате, представленной в цифрах.(01-31)
Пример:
from datetime import datetime
time = datetime.now()
print("Без форматирования: ", time)
print("После форматирования: ", time.strftime("%b %d, %Y"))
Вывод:
Без форматирования: 2022-06-21 14:57:29.616289
После форматирования: Jun 21, 2022
Заключение
Используя функцию форматирования даты, программисты могут легко изменить то, как они хотят, чтобы дата была представлена в их проектах. С упомянутыми форматами дат попробуйте изменить форматы даты в своих программах.