---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.com/dev/games/doc/en/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/hi/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/ko/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/ru/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/tr/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/vi/sdk/sdk-server-time.md
  - https://yandex.com/dev/games/doc/zh/sdk/sdk-server-time.md
  - href: ko/sdk/sdk-server-time.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/ko/llms.txt

# 서버 시간

Yandex Games SDK는 서버와 동기화된 시간을 얻을 수 있는 기능을 제공합니다. 이 방법은 다음과 같은 경우에 유용합니다:

- **조작 방지**: 사용자가 자신의 기기에서 시간을 변경하여 게임 과정에 영향을 미치는 것을 방지합니다.
- **게임 이벤트**: 신뢰할 수 있는 시간 출처가 중요한 활동과 보상을 추가할 수 있습니다. 예를 들어: 매일 또는 매주 보너스, 계절 이벤트 및 퀘스트 등입니다.

## ysdk.serverTime()

이 메서드는 `timestamp`, 즉 모든 기기에서 동일한 서버 시간(밀리초 단위)을 반환합니다. 이는 `Date.now()` 결과 형식과 비슷하지만 후자는 사용자 기기의 시간을 반환하며, 이는 서버 시간과 다를 수 있고 플레이어의 조작으로부터 보호되지 않습니다. `ysdk.serverTime()` 메서드는 코드를 통해 재정의하거나 변경할 수 없으므로 더 신뢰성이 높습니다.

항상 정확한 시간이 필요할 때 이를 호출하십시오.

{% list tabs %}

- await 사용

  ```javascript
  const ysdk = await YaGames.init();

    // 서버와 동기화된 밀리초 단위의 시간을 반환합니다.
    ysdk.serverTime(); // 예를 들어, 1720613073778.

    // 시간이 지난 후 다시 호출합니다.
    ysdk.serverTime(); // 예를 들어, 1720613132635.
  ```

- await 없는 버전

  ```javascript
  YaGames.init().then(ysdk => {

      // 서버와 동기화된 시간을 밀리초 단위로 반환합니다.
      ysdk.serverTime(); // 예를 들어, 1720613073778.

      // 시간이 지난 후에 다시 호출합니다.
      ysdk.serverTime(); // 예를 들어, 1720613132635.
  });
  ```

{% endlist %}

## 일일 보상 구현 예시 {#reward-examples}

- 신뢰할 수 있는 서버 시간을 얻기 위해 `ysdk.serverTime()`을 사용합니다.
- 데이터는 [player.setData()](https://yandex.com/dev/games/doc/ko/sdk/sdk-player.md#ingame-data)를 통해 저장됩니다.
- 중복 보상 수령 방지를 구현했습니다.
- 시간을 안전한 방식으로 비교합니다.

{% note warning "경고" %}

예시의 `giveReward()` 함수는 플레이어에게 보상을 지급하는 여러분의 직접 구현입니다.

{% endnote %}

### 마지막 게임 접속 후 24시간이 지나면 보상이 지급됩니다. {#twenty-four-hours-reward}

```javascript
YaGames.init().then(async ysdk => {
    // 플레이어 초기화.
    const player = await ysdk.getPlayer();

    // 저장된 데이터 가져오기.
    const data = await player.getData();

    // 현재 서버 시간.
    const currentTime = ysdk.serverTime();

    // 마지막 보상 수령 시간 (없으면 0 사용).
    const lastRewardTime = data.lastRewardTime || 0;

    // 24시간(밀리초 단위).
    const DAY_IN_MS = 24 * 60 * 60 * 1000;

    if (currentTime - lastRewardTime >= DAY_IN_MS) {
        // 24시간이 지났으므로 보상을 지급할 수 있습니다.
        await giveReward(); // 보상 지급 함수.

        // 새로운 보상 수령 시간 저장.
        await player.setData({
            lastRewardTime: currentTime
        });
    }
});
```

### 보상은 달력 기준 하루에 한 번(UTC 기준 자정에 초기화) 지급됩니다. {#calendar-day-reward}

```javascript
YaGames.init().then(async ysdk => {
    // 플레이어 초기화.
    const player = await ysdk.getPlayer();

    // 저장된 데이터 가져오기.
    const data = await player.getData();

    // 현재 서버 시간.
    const currentTime = ysdk.serverTime();

    // "YYYY-MM-DD" 형식의 마지막 보상 날짜 가져오기.
    const lastRewardDate = data.lastRewardDate || '';

    // "YYYY-MM-DD" 형식의 현재 날짜 가져오기.
    const currentDate = new Date(currentTime).toISOString().split('T')[0];

    if (currentDate !== lastRewardDate) {
        // 오늘은 아직 보상을 받지 않았습니다.
        await giveReward(); // 보상 지급 함수.

        // 보상 수령 날짜 저장.
        await player.setData({
            lastRewardDate: currentDate
        });
    }
});
```


---

<!-- source: ko/_includes/concepts/troubleshooting/id-troubleshooting/support.md -->
{% note info "참고" %}

지원팀은 완성된 게임을 Yandex Games에 게시하는 데 도움을 드릴 수 있습니다. 개발이나 테스트에 대해 궁금한 점이 있다면, [Discord 채널](https://discord.com/invite/wU4p3whr4T)에서 질문해 주세요.

{% endnote %}


지원 서비스는 얀덱스 게임에서 완성 된 게임을 게시 할 수 있습니다. 개발 또는 테스트에 대한 질문이 있는 경우
<!-- endsource: ko/_includes/concepts/troubleshooting/id-troubleshooting/support.md -->

<!-- source: ko/_includes/button-fos.md -->
Yandex Games SDK 사용과 관련하여 문제가 발생하거나 질문이 있는 경우 다음 방법으로 지원팀에 문의하세요.


<a href="https://yandex.com/chat/#/user/a4fa5c06-75db-9b38-6eea-b1673785f7d5">
  <span class="button">채팅 상담</span>
</a>
<!-- endsource: ko/_includes/button-fos.md -->
