Я просто столкнулся с той же проблемой, и это шаги, которые я выполняю, чтобы предоставить версию Python. Я хотел запустить мои задания PySpark с помощью Python 2.7 вместо 2.6.
$SPARK_HOME
указывает (в моем случае /home/cloudera/spark-2.1.0-bin-hadoop2.7/
) conf
есть файл с именем spark-env.sh
]. Если у вас есть файл с именем spark-env.sh.template
, вам нужно будет скопировать файл в новый файл с именем spark-env.sh
. Таким образом, если вы загрузите отдельную автономную версию Spark, вы можете установить версию Python, к которой вы хотите запустить PySpark.
Stackoverflow использует такую функцию для определения возраста пользователя.
Полученный ответ:
DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (now < bday.AddYears(age)) age--;
Итак, ваш вспомогательный метод будет выглядеть как
public static string Age(this HtmlHelper helper, DateTime birthday)
{
DateTime now = DateTime.Today;
int age = now.Year - birthday.Year;
if (now < birthday.AddYears(age)) age--;
return age.ToString();
}
Сегодня я использую другую версию этой функции, чтобы включить дату обращения. Это позволяет мне узнать возраст кого-либо в будущем или в прошлом. Это используется для нашей системы бронирования, где требуется возраст в будущем.
public static int GetAge(DateTime reference, DateTime birthday)
{
int age = reference.Year - birthday.Year;
if (reference < birthday.AddYears(age)) age--;
return age;
}
Еще один умный способ из той древней ветки :
int age = (
Int32.Parse(DateTime.Today.ToString("yyyyMMdd")) -
Int32.Parse(birthday.ToString("yyyyMMdd"))) / 10000;
Я делаю это так:
(Код немного сокращен)
public struct Age
{
public readonly int Years;
public readonly int Months;
public readonly int Days;
}
public Age( int y, int m, int d ) : this()
{
Years = y;
Months = m;
Days = d;
}
public static Age CalculateAge ( DateTime birthDate, DateTime anotherDate )
{
if( startDate.Date > endDate.Date )
{
throw new ArgumentException ("startDate cannot be higher then endDate", "startDate");
}
int years = endDate.Year - startDate.Year;
int months = 0;
int days = 0;
// Check if the last year, was a full year.
if( endDate < startDate.AddYears (years) && years != 0 )
{
years--;
}
// Calculate the number of months.
startDate = startDate.AddYears (years);
if( startDate.Year == endDate.Year )
{
months = endDate.Month - startDate.Month;
}
else
{
months = ( 12 - startDate.Month ) + endDate.Month;
}
// Check if last month was a complete month.
if( endDate < startDate.AddMonths (months) && months != 0 )
{
months--;
}
// Calculate the number of days.
startDate = startDate.AddMonths (months);
days = ( endDate - startDate ).Days;
return new Age (years, months, days);
}
// Implement Equals, GetHashCode, etc... as well
// Overload equality and other operators, etc...
}
Я действительно не понимаю, зачем вы сделали это помощником HTML. Я бы сделал его частью словаря ViewData в методе действия контроллера. Примерно так:
ViewData["Age"] = DateTime.Now.Year - birthday.Year;
Учитывая, что день рождения передается в метод действия и является объектом DateTime.