Преобразовать строку в целое число в JavaScript?

Функция нормализации общего назначения для форматирования любой временной метки из любого часового пояса в другой. Очень полезно для хранения datetimestamps пользователей из разных часовых поясов в реляционной базе данных. Для сравнения баз данных отметьте метку времени как UTC и используйте ее с gmdate('Y-m-d H:i:s')

/**
 * Convert Datetime from any given olsonzone to other.
 * @return datetime in user specified format
 */

function datetimeconv($datetime, $from, $to)
{
    try {
        if ($from['localeFormat'] != 'Y-m-d H:i:s') {
            $datetime = DateTime::createFromFormat($from['localeFormat'], $datetime)->format('Y-m-d H:i:s');
        }
        $datetime = new DateTime($datetime, new DateTimeZone($from['olsonZone']));
        $datetime->setTimeZone(new DateTimeZone($to['olsonZone']));
        return $datetime->format($to['localeFormat']);
    } catch (\Exception $e) {
        return null;
    }
}

Использование:

$from = ['localeFormat' => "d/m/Y H:i A", 'olsonZone' => 'Asia/Calcutta'];

$to = ['localeFormat' => "Y-m-d H:i:s", 'olsonZone' => 'UTC'];

datetimeconv("14/05/1986 10:45 PM", $from, $to); // returns "1986-05-14 17:15:00"
1544
задан DavidRR 29 December 2018 в 21:39
поделиться

8 ответов

Самым простым способом было бы использовать встроенную функцию Number :

var x = Number("1000")

Если это не сработает для вас, то есть parseInt ], унарный плюс , parseFloat with floor и Math.round методы.

parseInt:

var x = parseInt("1000", 10); // you want to use radix 10
    // so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])

унарный плюс если ваша строка уже имеет форму целого числа:

var x = +"1000";

, если ваша строка является или может быть числом с плавающей запятой и вам нужно целое число:

var x = Math.floor("1000.01"); //floor automatically converts string to number

или, если вы собираетесь использовать Math.floor несколько раз:

var floor = Math.floor;
var x = floor("1000.01");

Если вы из тех, кто забывает ввести систему счисления при вызове parseInt, вы можете использовать parseFloat и округлять его как угодно. Здесь я использую пол.

var floor = Math.floor;
var x = floor(parseFloat("1000.01"));

Интересно, что Math.round (например, Math.floor) выполняет преобразование строки в число, поэтому, если вы хотите округлить число (или если у вас есть целое число в строке), это отличный вариант. Кстати, может быть, мой любимый:

var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)
2044
ответ дан 22 November 2019 в 20:13
поделиться

Самый безопасный способ удостовериться Вы получаете допустимое целое число:

let integer = (parseInt(value, 10) || 0);

Примеры:

// Example 1 - Invalid value:
let value = null;
let integer = (parseInt(value, 10) || 0);
// => integer = 0
// Example 2 - Valid value:
let value = "1230.42";
let integer = (parseInt(value, 10) || 0);
// => integer = 1230
// Example 3 - Invalid value:
let value = () => { return 412 };
let integer = (parseInt(value, 10) || 0);
// => integer = 0
1
ответ дан 22 November 2019 в 20:13
поделиться
function parseIntSmarter(str) {
    // ParseInt is bad because it returns 22 for "22thisendsintext"
    // Number() is returns NaN if it ends in non-numbers, but it returns 0 for empty or whitespace strings.
    return isNaN(Number(str)) ? NaN : parseInt(str, 10);
}
1
ответ дан 22 November 2019 в 20:13
поделиться

можно использовать плюс, например, =>

персонаж var = '24'; var personAge1 = (+personAge)

затем Вы видите, что typeof персонаж является номером

0
ответ дан 22 November 2019 в 20:13
поделиться

Попробуйте функцию parseInt:

var number = parseInt("10");

Но есть проблема. Если вы попытаетесь преобразовать «010» с помощью функции parseInt, она определит восьмеричное число и вернет число 8. Итак, вам нужно указать систему счисления (от 2 до 36). В данном случае база 10.

parseInt(string, radix)

Пример:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

Обратите внимание, что parseInt игнорирует неверные данные после синтаксического анализа чего-либо действительного.
Этот гид будет разбираться как 51:

var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true
216
ответ дан 22 November 2019 в 20:13
поделиться

Попробуйте parseInt.

var number = parseInt("10", 10); //number will have value of 10.
33
ответ дан 22 November 2019 в 20:13
поделиться

Также в качестве примечания: в Mootools есть функция toInt (), которая используется в любой собственной строке (или с плавающей точкой (или целым числом)).

"2".toInt()   // 2
"2px".toInt() // 2
2.toInt()     // 2
15
ответ дан 22 November 2019 в 20:13
поделиться

Остерегайтесь, если вы используете parseInt для преобразования числа с плавающей запятой в научную нотацию! Например:

parseInt("5.6e-14") 

приведет к

5 

вместо

0
18
ответ дан 22 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: