$settings['currency_code'], 'symbol' => $settings['currency_symbol'], 'position' => $settings['currency_position'], 'decimals' => (int) $settings['price_decimals'], 'decimalSeparator' => $settings['decimal_separator'], 'thousandSeparator' => $settings['thousand_separator'], ]; } public static function date( string $mysql_datetime ): string { return wp_date( get_option( 'date_format' ), self::to_timestamp( $mysql_datetime ) ); } public static function time( string $mysql_datetime ): string { return wp_date( get_option( 'time_format' ), self::to_timestamp( $mysql_datetime ) ); } public static function datetime( string $mysql_datetime ): string { return self::date( $mysql_datetime ) . ' ยท ' . self::time( $mysql_datetime ); } public static function duration( int $minutes ): string { $hours = intdiv( $minutes, 60 ); $remaining_minute = $minutes % 60; if ( $hours && $remaining_minute ) { /* translators: 1: hours, 2: minutes */ return sprintf( __( '%1$dh %2$dm', 'cleannetic' ), $hours, $remaining_minute ); } if ( $hours ) { /* translators: %d: hours */ return sprintf( __( '%dh', 'cleannetic' ), $hours ); } /* translators: %d: minutes */ return sprintf( __( '%dm', 'cleannetic' ), $remaining_minute ); } /** * Converts a site-local MySQL datetime into a Unix timestamp. */ public static function to_timestamp( string $mysql_datetime ): int { $date = date_create_immutable( $mysql_datetime, wp_timezone() ); return $date ? $date->getTimestamp() : 0; } public static function now(): \DateTimeImmutable { return new \DateTimeImmutable( 'now', wp_timezone() ); } public static function initials( string $full_name ): string { $words = preg_split( '/\s+/', trim( $full_name ) ) ?: []; $initials = ''; foreach ( array_slice( $words, 0, 2 ) as $word ) { $initials .= mb_strtoupper( mb_substr( $word, 0, 1 ) ); } return $initials ?: '?'; } }