diff --git a/dap-sdk b/dap-sdk
index be69f08335f87c02611bde352b3062f21eed1ef8..1f0c4caf7a9cec9ddee67e9019e337c4c9278168 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit be69f08335f87c02611bde352b3062f21eed1ef8
+Subproject commit 1f0c4caf7a9cec9ddee67e9019e337c4c9278168
diff --git a/modules/common/dap_chain_datum.c b/modules/common/dap_chain_datum.c
index 1548f1698f327a12bb6ec69c6f0b2bb54363ead2..fa6c46c570e2e1f93335dfbf0a6c3433b856ec7f 100644
--- a/modules/common/dap_chain_datum.c
+++ b/modules/common/dap_chain_datum.c
@@ -240,18 +240,18 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum,
                              dap_hash_fast_t *a_tx_hash,
                              dap_chain_net_id_t a_net_id)
 {
-    dap_time_t l_ts_create = (dap_time_t)a_datum->header.ts_created;
     bool l_is_first = false;
     dap_chain_tx_in_t *l_in_item = (dap_chain_tx_in_t *)dap_chain_datum_tx_item_get(a_datum, NULL, TX_ITEM_TYPE_IN, NULL);
     if (l_in_item && dap_hash_fast_is_blank(&l_in_item->header.tx_prev_hash))
         l_is_first = true;
-    char l_tmp_buf[70];
+    char l_tmp_buf[DAP_TIME_STR_SIZE];
     char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
             ? dap_enc_base58_encode_hash_to_str(a_tx_hash)
             : dap_chain_hash_fast_to_str_new(a_tx_hash);
+    dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, a_datum->header.ts_created);
     dap_string_append_printf(a_str_out, "transaction:%s hash %s\n TS Created: %s%s%s\n Items:\n",
-                              l_is_first ? " (emit)" : "", l_hash_str, dap_ctime_r(&l_ts_create, l_tmp_buf),
-                              a_ticker ? " Token ticker: " : "", a_ticker ? a_ticker : "");
+                             l_is_first ? " (emit)" : "", l_hash_str, l_tmp_buf,
+                             a_ticker ? " Token ticker: " : "", a_ticker ? a_ticker : "");
     DAP_DELETE(l_hash_str);
     uint32_t l_tx_items_count = 0;
     uint32_t l_tx_items_size = a_datum->header.tx_items_size;
@@ -468,14 +468,14 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum,
             char *l_value_str = dap_chain_balance_print(((dap_chain_tx_out_cond_t*)item)->header.value);
             char *l_coins_str = dap_chain_balance_to_coins(((dap_chain_tx_out_cond_t*)item)->header.value);
             dap_time_t l_ts_exp = ((dap_chain_tx_out_cond_t*)item)->header.ts_expires;
+            dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_exp);
             dap_string_append_printf(a_str_out, "\t OUT COND:\n"
                                                 "\t Header:\n"
                                                 "\t\t ts_expires: %s"
                                                 "\t\t value: %s (%s)\n"
                                                 "\t\t subtype: %s\n"
                                                 "\t\t uid: 0x%016"DAP_UINT64_FORMAT_x"\n",
-                                     l_ts_exp ? dap_ctime_r(&l_ts_exp, l_tmp_buf) : "never\n",
-                                     l_coins_str, l_value_str,
+                                     l_ts_exp ? l_tmp_buf : "never\n", l_coins_str, l_value_str,
                                      dap_chain_tx_out_cond_subtype_to_str(((dap_chain_tx_out_cond_t*)item)->header.subtype),
                                      ((dap_chain_tx_out_cond_t*)item)->header.srv_uid.uint64);
             DAP_DELETE(l_value_str);
@@ -527,9 +527,9 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum,
                     DAP_DELETE(l_rate_str);
                 } break;
                 case DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE_LOCK: {
-                    dap_time_t l_ts_exp = ((dap_chain_tx_out_cond_t*)item)->subtype.srv_stake_lock.time_unlock;
-                    dap_string_append_printf(a_str_out, "\t\t\t time_unlock %s\n",
-                                             dap_ctime_r(&l_ts_exp, l_tmp_buf));
+                    dap_time_t l_ts_unlock = ((dap_chain_tx_out_cond_t*)item)->subtype.srv_stake_lock.time_unlock;
+                    dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_unlock);
+                    dap_string_append_printf(a_str_out, "\t\t\t time_unlock %s\n", l_tmp_buf);
                 } break;
                 default: break;
             }
@@ -565,12 +565,15 @@ bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum,
                     l_temp = l_temp->next;
             }
 
-            if(l_voting_params->voting_expire)
-                    dap_string_append_printf(a_str_out, "\t Voting expire: %s\n", dap_ctime_r(&l_voting_params->voting_expire, l_tmp_buf));
+            if (l_voting_params->voting_expire) {
+                dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_voting_params->voting_expire);
+                dap_string_append_printf(a_str_out, "\t Voting expire: %s\n", l_tmp_buf);
+            }
             if (l_voting_params->votes_max_count)
                     dap_string_append_printf(a_str_out, "\t Votes max count: %"DAP_UINT64_FORMAT_U"\n", l_voting_params->votes_max_count);
             dap_string_append_printf(a_str_out, "\t Changing vote is %s available.\n", l_voting_params->vote_changing_allowed ? "" : "not");
-            dap_string_append_printf(a_str_out, "\t A delegated key is%s required to participate in voting. \n", l_voting_params->delegate_key_required ? "" : " not");
+            dap_string_append_printf(a_str_out, "\t A delegated key is%s required to participate in voting. \n",
+                                     l_voting_params->delegate_key_required ? "" : " not");
 
             dap_list_free_full(l_voting_params->answers_list, NULL);
             DAP_DELETE(l_voting_params->voting_question);
diff --git a/modules/json_rpc/common/dap_json_rpc_chain_datum.c b/modules/json_rpc/common/dap_json_rpc_chain_datum.c
index 1590afbe227224db66fc16bfbb9d8bcd023d0c40..c55f9d93999a547009b8138d917af098074950e4 100644
--- a/modules/json_rpc/common/dap_json_rpc_chain_datum.c
+++ b/modules/json_rpc/common/dap_json_rpc_chain_datum.c
@@ -676,10 +676,9 @@ json_object * dap_chain_datum_to_json(dap_chain_datum_t* a_datum){
     json_object_object_add(l_object, "data_size", l_obj_size);
     json_object_object_add(l_object, "version", l_obj_version);
 
-    char l_time_str[32];
+    char l_time_str[DAP_TIME_STR_SIZE];
     if (a_datum->header.ts_create) {
-        uint64_t l_ts = a_datum->header.ts_create;
-        dap_ctime_r(&l_ts, l_time_str);                             /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
+        dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, a_datum->header.ts_create); /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
         l_time_str[strlen(l_time_str)-1] = '\0';                    /* Remove "\n"*/
     }
     json_object *l_obj_ts_created = json_object_new_string(l_time_str);
diff --git a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c
index 9548584eddf8fbaf4cb98b6c859f9e4591dc6dd7..043b57b2519d415eb37d79a995c7f3adeead627c 100644
--- a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c
+++ b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c
@@ -87,7 +87,7 @@ json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx){
                 dap_time_t l_ts_exp = ((dap_chain_tx_out_cond_t*)item)->header.ts_expires;
                 char l_time_str[32] = "never";
                 if (l_ts_exp) {
-                    dap_ctime_r(&l_ts_exp, l_time_str);                         /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
+                    dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, l_ts_exp); /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
                     l_time_str[strlen(l_time_str)-1] = '\0';                    /* Remove "\n"*/
                 }
                 json_object_object_add(l_obj_item_data, "ts_expires", json_object_new_string(l_time_str));
diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c
index 3b8b2c786983a0905efabf1fbbfbdef08dcd4618..227d5c0bd2c7d138c07e75a955ec20bdee7ca103 100644
--- a/modules/net/dap_chain_ledger.c
+++ b/modules/net/dap_chain_ledger.c
@@ -819,11 +819,9 @@ dap_chain_datum_token_t *dap_ledger_token_ticker_check(dap_ledger_t *a_ledger, c
 static void s_tx_header_print(dap_string_t *a_str_out, dap_chain_datum_tx_t *a_tx,
                               const char *a_hash_out_type, dap_chain_hash_fast_t *a_tx_hash)
 {
-    char l_time_str[32] = "unknown";
-    if (a_tx->header.ts_created) {
-        uint64_t l_ts = a_tx->header.ts_created;
-        dap_ctime_r(&l_ts, l_time_str);
-    }
+    char l_time_str[DAP_TIME_STR_SIZE] = "unknown";
+    if (a_tx->header.ts_created)
+        dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, a_tx->header.ts_created);
     char *l_tx_hash_str = dap_strcmp(a_hash_out_type, "hex")
             ? dap_enc_base58_encode_hash_to_str(a_tx_hash)
             : dap_chain_hash_fast_to_str_new(a_tx_hash);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 75c6535935c1a8f62a07ce3c17f0b3824f97b735..d85f0058f2441c2996521ad0e88c8f71bcf2ed8b 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -3021,7 +3021,7 @@ static void s_nodelist_change_notify(dap_store_obj_t *a_obj, void *a_arg)
     inet_ntop(AF_INET, &l_node_info->hdr.ext_addr_v4, l_node_ipv4_str, INET_ADDRSTRLEN);
     inet_ntop(AF_INET6, &l_node_info->hdr.ext_addr_v6, l_node_ipv6_str, INET6_ADDRSTRLEN);
     char l_ts[128] = { '\0' };
-    dap_gbd_time_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
+    dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
 
     log_it(L_MSG, "Add node "NODE_ADDR_FP_STR" ipv4 %s(ipv6 %s):%s at %s to network\n",
                              NODE_ADDR_FP_ARGS_S(l_node_info->hdr.address),
diff --git a/modules/net/dap_chain_net_node_list.c b/modules/net/dap_chain_net_node_list.c
index 73d1787adbafb9e69192a573a1a87ca7e76e3ff4..f493431055a54c5b0a5098b8ba88d7128de7a124 100644
--- a/modules/net/dap_chain_net_node_list.c
+++ b/modules/net/dap_chain_net_node_list.c
@@ -273,7 +273,7 @@ static void s_node_list_callback_notify(dap_store_obj_t *a_obj, void *a_arg)
                 inet_ntop(AF_INET, &l_node_info->hdr.ext_addr_v4, l_node_ipv4_str, INET_ADDRSTRLEN);
                 inet_ntop(AF_INET6, &l_node_info->hdr.ext_addr_v6, l_node_ipv6_str, INET6_ADDRSTRLEN);
                 char l_ts[128] = { '\0' };
-                dap_gbd_time_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
+                dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
 
                 log_it(L_MSG, "Add node "NODE_ADDR_FP_STR" %s %u, pinned by "NODE_ADDR_FP_STR" at %s",
                                          NODE_ADDR_FP_ARGS_S(l_node_info->hdr.address),
diff --git a/modules/net/dap_chain_net_voting.c b/modules/net/dap_chain_net_voting.c
index 00855faa3fcd1bd6677e146d6fa56d9ef460aa0b..285bcd3f129e1aedb730b1e9f329fbdafd84a3fe 100644
--- a/modules/net/dap_chain_net_voting.c
+++ b/modules/net/dap_chain_net_voting.c
@@ -1131,9 +1131,10 @@ static int s_cli_voting(int a_argc, char **a_argv, void **a_str_reply)
         dap_string_append(l_str_out, "\n\n");
 
         if(l_voting->voting_params.voting_expire_offset){
-            char l_tmp_buf[70];
+            char l_tmp_buf[DAP_TIME_STR_SIZE];
             dap_time_t l_expire = *(dap_time_t*)((byte_t*)l_voting->voting_params.voting_tx + l_voting->voting_params.voting_expire_offset);
-            dap_string_append_printf(l_str_out, "\t Voting expire: %s", dap_ctime_r(&l_expire, l_tmp_buf));
+            dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_expire);
+            dap_string_append_printf(l_str_out, "\t Voting expire: %s", l_tmp_buf);
             dap_string_truncate(l_str_out, l_str_out->len - 1);
             dap_string_append_printf(l_str_out, " (%s)\n", l_expire > dap_time_now() ? "active" : "expired");
         }
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index b5866be0d3c3314bb760ae7d74b5c8a754960a87..ecc80109b02ee3e36b83bdad6be0bc4668f43400 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -500,7 +500,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
                 inet_ntop(AF_INET, &l_node_info->hdr.ext_addr_v4, l_node_ipv4_str, INET_ADDRSTRLEN);
                 inet_ntop(AF_INET6, &l_node_info->hdr.ext_addr_v6, l_node_ipv6_str, INET6_ADDRSTRLEN);
                 char l_ts[128] = { '\0' };
-                dap_gbd_time_to_str_rfc822(l_ts, sizeof(l_ts), l_objs[i].timestamp);
+                dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), l_objs[i].timestamp);
 
                 dap_string_append_printf(l_string_reply, NODE_ADDR_FP_STR"    %-20s%-8d"NODE_ADDR_FP_STR"    %-32s\n",
                                          NODE_ADDR_FP_ARGS_S(l_node_info->hdr.address),
@@ -879,7 +879,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply)
         }*/
         if (l_ts) {
             char l_ts_str[80] = { '\0' };
-            dap_gbd_time_to_str_rfc822(l_ts_str, sizeof(l_ts_str), l_ts);
+            dap_nanotime_to_str_rfc822(l_ts_str, sizeof(l_ts_str), l_ts);
             char *l_value_hexdump = dap_dump_hex(l_value_out, l_out_len);
             if (l_value_hexdump) {
 
@@ -984,7 +984,7 @@ int com_global_db(int a_argc, char ** a_argv, void **a_str_reply)
         dap_string_t *l_ret_str = dap_string_new(NULL);
         for(size_t i = 0; i < l_objs_count; i++) {
             char l_ts[64] = { '\0' };
-            dap_gbd_time_to_str_rfc822(l_ts, sizeof(l_ts), l_obj[i].timestamp);
+            dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), l_obj[i].timestamp);
             dap_string_append_printf(l_ret_str, "\t%s, %s\n", l_obj[i].key, l_ts);
         }
         dap_global_db_objs_delete(l_obj, l_objs_count);
@@ -3562,7 +3562,7 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *
         DAP_DELETE(l_gdb_group_mempool);
         return DAP_COM_MEMPOOL_PROC_LIST_ERROR_REAL_HASH_DATUM_DOES_NOT_MATCH_HASH_DATA_STRING;
     }
-    char buf[50];
+    char buf[DAP_TIME_STR_SIZE];
     dap_time_t l_ts_create = (dap_time_t)l_datum->header.ts_create;
     const char *l_type = NULL;
     DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_type);
@@ -3572,8 +3572,8 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *
     json_object *l_jobj_type = json_object_new_string(l_type);
     json_object *l_jobj_ts_created = json_object_new_object();
     json_object *l_jobj_ts_created_time_stamp = json_object_new_uint64(l_ts_create);
-    char *l_ts_created_str = dap_ctime_r(&l_ts_create, buf);
-    if (!l_ts_created_str || !l_jobj_ts_created || !l_jobj_ts_created_time_stamp || !l_jobj_type ||
+    int l_res = dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_ts_create);
+    if (l_res < 0 || !l_jobj_ts_created || !l_jobj_ts_created_time_stamp || !l_jobj_type ||
         !l_jobj_hash || !l_jobj_datum || !l_jobj_res) {
         json_object_put(l_jobj_res);
         json_object_put(l_jobj_datum);
@@ -3581,12 +3581,10 @@ int _cmd_mempool_proc(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char *
         json_object_put(l_jobj_type);
         json_object_put(l_jobj_ts_created);
         json_object_put(l_jobj_ts_created_time_stamp);
-        DAP_DEL_Z(l_ts_created_str);
         dap_json_rpc_allocation_error;
         return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED;
     }
-    json_object *l_jobj_ts_created_str = json_object_new_string(l_ts_created_str);
-    DAP_DEL_Z(l_ts_created_str);
+    json_object *l_jobj_ts_created_str = json_object_new_string(buf);
     json_object *l_jobj_data_size = json_object_new_uint64(l_datum->header.data_size);
     if (!l_jobj_ts_created_str || !l_jobj_data_size) {
         json_object_put(l_jobj_res);
diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c
index 0a8ea3adb89cb789ab252a34556c448cf85bf30e..1c9f797c54955bbad513f3f2d0cac1fb7a1d3000 100644
--- a/modules/net/dap_chain_node_cli_cmd_tx.c
+++ b/modules/net/dap_chain_node_cli_cmd_tx.c
@@ -176,10 +176,9 @@ json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash,
     json_object_object_add(json_obj_datum, "ret_code", json_object_new_int(l_ret_code));
     json_object_object_add(json_obj_datum, "ret_code_str", json_object_new_string(dap_ledger_tx_check_err_str(l_ret_code)));
 
-    char l_time_str[32];
+    char l_time_str[DAP_TIME_STR_SIZE];
     if (l_tx->header.ts_created) {
-        uint64_t l_ts = l_tx->header.ts_created;
-        dap_ctime_r(&l_ts, l_time_str);                             /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
+        dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, l_tx->header.ts_created);/* Convert ts to  "Sat May 17 01:17:08 2014\n" */
         l_time_str[strlen(l_time_str)-1] = '\0';                    /* Remove "\n"*/
     }
     json_object *l_obj_ts_created = json_object_new_string(l_time_str);
@@ -229,10 +228,9 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro
 {
     bool l_declined = false;
     // transaction time
-    char l_time_str[32] = "unknown";                                /* Prefill string */
+    char l_time_str[DAP_TIME_STR_SIZE] = "unknown";                                /* Prefill string */
     if (a_tx->header.ts_created) {
-        uint64_t l_ts = a_tx->header.ts_created;
-        dap_ctime_r(&l_ts, l_time_str);                             /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
+        dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, a_tx->header.ts_created); /* Convert ts to  "Sat May 17 01:17:08 2014\n" */
         l_time_str[strlen(l_time_str)-1] = '\0';                    /* Remove "\n"*/
     }
     dap_chain_tx_hash_processed_ht_t *l_tx_data = NULL;
diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
index 1616bc2ab4b98fd80a75ebe18b4fb80feb734b2d..d448dfa7877f708e65e56fbca106fe53e04aae14 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
@@ -2540,15 +2540,14 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, void **a_str_reply)
                 for(dap_list_t *tx = l_args->ret; tx; tx = tx->next)
                 {
                     l_datum_tx = (dap_chain_datum_tx_t*)tx->data;
-                    dap_time_t l_ts_create = (dap_time_t)l_datum_tx->header.ts_created;
-                    char buf[50] = {[0]='\0'};
+                    char buf[DAP_TIME_STR_SIZE];
                     dap_hash_fast(l_datum_tx, dap_chain_datum_tx_get_size(l_datum_tx), &l_datum_hash);
                     l_tx_out_cond = dap_chain_datum_tx_out_cond_get(l_datum_tx, DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE_POS_DELEGATE,
                                                                                      &l_out_idx_tmp);
                     char l_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE];
                     dap_chain_hash_fast_to_str(&l_datum_hash, l_hash_str, sizeof(l_hash_str));
                     dap_string_append_printf(l_str_tmp,"%s \n",spaces);
-                    dap_string_append_printf(l_str_tmp,"%s \n",dap_ctime_r(&l_ts_create, buf));
+                    dap_string_append_printf(l_str_tmp, "%s \n", dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_datum_tx->header.ts_created));
                     dap_string_append_printf(l_str_tmp,"tx_hash:\t%s \n",l_hash_str);
 
                     l_signing_addr_str = dap_chain_addr_to_str(&l_tx_out_cond->subtype.srv_stake_pos_delegate.signing_addr);
diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c
index d73c2eadd34e96e6d3c94f04717c277f0c92f8ec..1dca52acb800f8eb6a43637acfe6156478bff9a2 100644
--- a/modules/service/xchange/dap_chain_net_srv_xchange.c
+++ b/modules/service/xchange/dap_chain_net_srv_xchange.c
@@ -1395,9 +1395,9 @@ static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, v
                 *(char*)(l_dot_pos + 3) = '\0';
             }
 
-            char l_tmp_buf[70] = {};
+            char l_tmp_buf[DAP_TIME_STR_SIZE] = {};
             dap_time_t l_ts_create = (dap_time_t)l_tx->header.ts_created;
-            dap_ctime_r(&l_ts_create, l_tmp_buf);
+            dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create);
             l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0';
 
             dap_cli_server_cmd_set_reply_text(a_str_reply, "orderHash: %s\n ts_created: %s (%"DAP_UINT64_FORMAT_U")\n Status: %s, amount: %s (%s) %s, filled: %s%%, rate (%s/%s): %s, net: %s\n\n", l_tx_hash_str,
@@ -1602,9 +1602,9 @@ static bool s_string_append_tx_cond_info( dap_string_t * a_reply_str,
 
             dap_string_append_printf(a_reply_str, "Hash: %s\n", l_tx_hash_str);
             if(a_print_ts){
-                char l_tmp_buf[70];
-                dap_time_t l_ts_create = (dap_time_t)a_tx->header.ts_created;
-                dap_string_append_printf(a_reply_str, "  ts_created: %s", dap_ctime_r(&l_ts_create, l_tmp_buf));
+                char l_tmp_buf[DAP_TIME_STR_SIZE];
+                dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, a_tx->header.ts_created);
+                dap_string_append_printf(a_reply_str, "  ts_created: %s", l_tmp_buf);
             }
             if( a_print_status)
                 dap_string_append_printf(a_reply_str, "  Status: %s,", l_is_closed ? "inactive" : "active");
@@ -1642,9 +1642,9 @@ static bool s_string_append_tx_cond_info( dap_string_t * a_reply_str,
 
             dap_string_append_printf(a_reply_str, "Hash: %s\n", l_tx_hash_str);
             if(a_print_ts){
-                char l_tmp_buf[70];
-                dap_time_t l_ts_create = (dap_time_t)a_tx->header.ts_created;
-                dap_string_append_printf(a_reply_str, "  ts_created: %s", dap_ctime_r(&l_ts_create, l_tmp_buf));
+                char l_tmp_buf[DAP_TIME_STR_SIZE];
+                dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, a_tx->header.ts_created);
+                dap_string_append_printf(a_reply_str, "  ts_created: %s", l_tmp_buf);
             }
             if(a_print_status)
                 dap_string_append_printf(a_reply_str, "  Status: %s,", l_is_closed ? "inactive" : "active");
@@ -1672,9 +1672,9 @@ static bool s_string_append_tx_cond_info( dap_string_t * a_reply_str,
 
             dap_string_append_printf(a_reply_str, "Hash: %s\n", l_tx_hash_str);
             if(a_print_ts){
-                char l_tmp_buf[70];
-                dap_time_t l_ts_create = (dap_time_t)a_tx->header.ts_created;
-                dap_string_append_printf(a_reply_str, "  ts_created: %s", dap_ctime_r(&l_ts_create, l_tmp_buf));
+                char l_tmp_buf[DAP_TIME_STR_SIZE];
+                dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, a_tx->header.ts_created);
+                dap_string_append_printf(a_reply_str, "  ts_created: %s", l_tmp_buf);
             }
             if (a_print_status)
                 dap_string_append_printf(a_reply_str, "  Status: inactive,");
@@ -1906,9 +1906,9 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply)
                     *(char*)(l_dot_pos + 3) = '\0';
                 }
 
-                char l_tmp_buf[70] = {};
-                dap_time_t l_ts_create = (dap_time_t)l_tx->header.ts_created;
-                dap_ctime_r(&l_ts_create, l_tmp_buf);
+                char l_tmp_buf[DAP_TIME_STR_SIZE];
+                dap_time_t l_ts_create = l_tx->header.ts_created;
+                dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create);
                 l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0';
 
                 dap_string_append_printf(l_reply_str, "orderHash: %s\n ts_created: %s (%"DAP_UINT64_FORMAT_U")\n Status: %s, amount: %s (%s) %s, filled: %s%%, rate (%s/%s): %s, net: %s\n\n", l_tx_hash_str,
@@ -2225,8 +2225,8 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply)
 
                     char *l_rate_average_str = dap_chain_balance_to_coins(l_rate_average);
                     char *l_last_rate_str = dap_chain_balance_to_coins(l_rate);
-                    char l_tmp_buf[70] = {};
-                    dap_ctime_r(&l_last_rate_time, l_tmp_buf);
+                    char l_tmp_buf[DAP_TIME_STR_SIZE];
+                    dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_last_rate_time);
                     l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0';
                     dap_string_append_printf(l_reply_str,"Average rate: %s   \n\rLast rate: %s Last rate time: %s (%"DAP_UINT64_FORMAT_U")", l_rate_average_str, l_last_rate_str, l_tmp_buf, l_last_rate_time);
                     DAP_DELETE(l_rate_average_str);